简体   繁体   English

如何在选择器视图iOS中设置文本对齐方式

[英]How to set the text alignment in picker view iOS

I need to set the alignment of the text in picker view but my solutions doesn't work. 我需要在选择器视图中设置文本的对齐方式,但我的解决方案不起作用。 This is my code so far. 到目前为止这是我的代码。 I used array to store values on the picker view. 我使用数组在选择器视图上存储值。

- (void)viewDidLoad{

[super viewDidLoad];

self.source = [[NSMutableArray alloc]
               initWithObjects:@"  5   Minutes", @"10   Minutes", @"15   Minutes", @"20   Minutes",@"25   Minutes",@"30   Minutes",@"35   Minutes",@"40   Minutes",@"45   Minutes",@"50   Minutes",@"55   Minutes",@"60   Minutes", nil];

self.picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 275.0, 320.0, 120.0)];


self.picker.delegate = self;
self.picker.dataSource = self;

[self.view addSubview:self.picker];
[self.picker selectRow:2 inComponent:0 animated:YES];}

then, 然后,

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [source objectAtIndex:row];
}

- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
 return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return [source count];
}

However, it works fine when it displays the values. 但是,它在显示值时工作正常。 But when I align the text at the center, instead of displaying the text(values on picker view), the picker view becomes empty. 但是当我在中心对齐文本时,选择器视图变为空,而不是显示文本(选择器视图上的值)。 This is the code on how I've done the alignment at the center. 这是关于我如何在中心完成对齐的代码。

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component 
reusingView:(UIView *)view
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 37)];
 //label.text = [NSString stringWithFormat:@"something here"];
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
return label;
}

What might be the solution for this? 这可能是什么解决方案? Please help me regarding this problem. 请帮我解决这个问题。

Thanks. 谢谢。

i done with this code for UIlabel text show in center of tableView like:- 我完成了这个代码用于UIlabel文本显示在tableView的中心,如: -

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 37)];

        if (component == 0) {

            label.font=[UIFont boldSystemFontOfSize:22];
            label.textAlignment = UITextAlignmentCenter;
            label.backgroundColor = [UIColor clearColor];

        label.text = [NSString stringWithFormat:@"%@", [source objectAtIndex:row]];
        label.font=[UIFont boldSystemFontOfSize:22];

        }
    [label autorelease];
    return label;
 }

Code output is 代码输出是

在此输入图像描述

对于swift 3我们可以使用

label.textAlignment = NSTextAlignment.center

use this code instead of your code.. 使用此代码而不是代码..

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{

    UIView *viewTemp = [[[UIView alloc]initWithFrame:CGRectMake(0, 0, 300, 44)]autorelease];
    [viewTemp setBackgroundColor:[UIColor clearColor]];

    UILabel *lbl = [[[UILabel alloc]initWithFrame:CGRectMake(5, 0, 300, 37)]autorelease];
    [lbl setBackgroundColor:[UIColor clearColor]];
    [lbl setFont:[UIFont boldSystemFontOfSize:22]];
    lbl.text = @"Some Text";
    [lbl setTextAlignment:UITextAlignmentCenter];
    [viewTemp addSubview:lbl];
    return viewTemp;
}

Here i return one UIView in which i add UILable see above code so your whole view display with UILable properly and also set backGroundColor of UIView is clear so its display layout of UIPickerView . 在这里我返回一个UIView ,其中我添加UILable看到上面的代码,所以你的整个视图正确显示UILable ,并设置UIView backGroundColor是明确的,所以它的UIPickerView显示布局。

I also display star like text in this UIPickerView . 我还在这个UIPickerView显示类似文本的星形。

See images Bellow.. 查看图片Bellow ..

在此输入图像描述在此输入图像描述

尝试这个:

label.textAlignment = NSTextAlignmentCenter;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM