iOS - 更改UIPickerView组件宽度

Pet*_*rbo 2 cocoa-touch objective-c uipickerview ios

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

小智 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  ;
    }   
}
Run Code Online (Sandbox Code Playgroud)

这是screenShot:

在此输入图像描述


nul*_*ter 5

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

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

我不确定您是否可以仅为某些组件设置值,但让其他组件默认接管.

  • 这正是我要求的,我如何为不希望更改默认宽度的组件返回默认值. (2认同)