Bạn có thể thay đổi chiều rộng bằng một phương pháp đại biểu thích hợp
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
switch(component) {
case 0: return 22;
case 1: return 44;
case 2: return 88;
default: return 22;
}
//NOT REACHED
return 22;
}
Đối với một kích thước văn bản tùy chỉnh, bạn có thể sử dụng các đại biểu trở lại quan điểm tùy chỉnh với bất cứ văn bản có kích thước bạn muốn:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *retval = (id)view;
if (!retval) {
retval= [[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)] autorelease];
}
retval.text = @"Demo";
retval.font = [UIFont systemFontOfSize:22];
return retval;
}
Tất nhiên, bạn sẽ cần phải sửa đổi chúng để có giá trị thích hợp cho ứng dụng của bạn, nhưng nó sẽ giúp bạn có được nơi bạn cần phải đi.
Nguồn
2008-11-02 06:24:53
Một vài lỗi trong khối mã thứ hai của bạn: \t - UIView cần được truyền tới (UILabel *). \t - Dòng gán lại đang thiếu dấu ngoặc mở và cần gọi initWithFrame nếu không chúng tôi sẽ không hiển thị gì: tức là. \t retval = [[[UILabel alloc] initWithFrame: CGRectMake (0.0f, 0.0f, [pickerView rowSizeForComponent: component] .width, [pickerView rowSizeForComponent: component] .height)] autorelease]; –
Cảm ơn, tôi sẽ thực hiện các thay đổi thích hợp, mặc dù không chính xác những gì bạn đề xuất. Tôi sẽ đúc thông qua một id, về cơ bản bởi vì nó là ngắn hơn và bạn không đưa ra bất cứ điều gì bởi vì các lval của biểu thức đã được gõ vào một UIView. –
Tôi cũng muốn thêm dòng này vào câu trả lời trong trường hợp bạn đang làm việc với một mảng để điền vào bộ chọn (rất có thể). Thay vì retval.text = @ "Demo", thay thế bằng retval.text = [messageArray objectAtIndex: row]; – Jazzmine