iOS - 更改UIPickerView组件宽度

时间:2012-02-18 08:26:13

标签: objective-c ios cocoa-touch uipickerview

我知道我可以使用委托方法UIPickerView设置– pickerView:widthForComponent:的组件宽度,但是如果我有2个组件,我只想更改第一个组件的宽度并保留第二个组件的宽度到默认值(iOS SDK会想出的东西)。我怎么做到这一点?

3 个答案:

答案 0 :(得分:8)

PickerView根据选择器中的组件数量来划分组件。所以组件没有默认值。但你仍然可以试试这个。

为此,尝试按百分比样式设置组件宽度。

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

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    if (component == 0)
    {
        return 10 ;
    }
    else
    {
        return 10 ;
    }
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (component == 0)
    {
        return @"Apple" ;
    }
    else
    {
        return @"iPhone" ;
    }
}

-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
    if (component == 0)
    {
        return (self.view.frame.size.width * 55 ) / 100  ;
    }
    else
    {
        return (self.view.frame.size.width * 30 ) / 100  ;
    }   
}

这是screenShot:

enter image description here

答案 1 :(得分:5)

除非您使用if语句并手动设置默认值(在找出它之后),如下所示:

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
    if (component == 0)
        return customWidth;
    return defaultValue;
}

我不确定您是否只能为某些组件设置值,但让其他组件默认接管。

答案 2 :(得分:2)

这是一个迟到的答案,但对于未来的读者来说,显然没有办法返回"默认"宽度。定义pickerView:widthForComponent:方法的那一刻,您必须明确设置所有组件'宽度,而不仅仅是其中的一部分。