如何正确对齐UIPickerView
中的文字?我尝试为行视图制作自定义UILabel
,但出于某种原因,没有任何内容显示,右对齐或其他方式。这是我写的:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
[label setText:[NSString stringWithFormat:@"row %d", row]];
[label setTextAlignment:UITextAlignmentRight];
return [label autorelease];
}
如果有人想知道,我使用CGRectZero
,因为我在UICatalog
示例中看到了它。
答案 0 :(得分:8)
我在picker和两个数组中选择了两个组件来设置特定组件中行的标题。
下面的代码会在中心显示pickerdata,其中包含选择器的默认字体和fontsize。 它将给出精确的pickerdata显示行为以及pickerdata的中心对齐。
下面,
NSArray *component1Array=[NSArray arrayWithObjects:@"0 lbs",@"1 lbs",@"2 lbs",@"3 lbs",@"4 lbs",@"5 lbs",nil];
NSArray *component2Array=[NSArray arrayWithObjects:@"0.00 oz",@"0.25 oz",@"0.50 oz",@"0.75 oz",@"1.00 oz",nil];
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
//I have taken two components thats why I have set frame of my "label" accordingly. you can set the frame of the label depends on number of components you have...
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 145, 45)];
//For right alignment of text,You can set the UITextAlignmentRight of the label.
//No need to set alignment to UITextAlignmentLeft because it is defaulted to picker data display behavior.
[label setTextAlignment:UITextAlignmentCenter];
label.opaque=NO;
label.backgroundColor=[UIColor clearColor];
label.textColor = [UIColor blackColor];
UIFont *font = [UIFont boldSystemFontOfSize:20];
label.font = font;
if(component == 0)
{
[label setText:[NSString stringWithFormat:@"%@",[component1Array objectAtIndex:row]]];
}
else if(component == 1)
{
[label setText:[NSString stringWithFormat:@"%@", [component2Array objectAtIndex:row]]];
}
return [label autorelease];
}
如果你使用上面的方法,你应该在下面提到UIPickerView委托方法...
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
以上示例代码的输出如下所示
答案 1 :(得分:3)
由于CGRectZero,你没有看到任何东西。你需要在你的情况下设置一个大小。
在UICatalog中,如果您谈论他们如何将CGRectZero用于CustomView ......如果您查看CustomView.m,您会看到他们实际上忽略了CGRectZero并将帧设置为initWithFrame中的大小:< / p>
答案 2 :(得分:3)
在iOS 6中,您现在可以返回NSAttributedString,它可以包含文本对齐属性。我在这里发布了另一个相关问题的简短片段:https://stackoverflow.com/a/14035356/928963
答案 3 :(得分:0)
请确保: