iOS - изменить ширину компонента UIPickerView - PullRequest
2 голосов
/ 18 февраля 2012

Я знаю, что могу установить ширину компонента UIPickerView с помощью метода делегата – pickerView:widthForComponent:, но скажите, если у меня есть 2 компонента, и я хочу только изменить ширину первого компонента и оставить ширину второго компонента равной значению по умолчанию (то, что iOS SDK выяснит). Как бы я этого достиг?

Ответы [ 3 ]

8 голосов
/ 31 января 2014

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  ;
    }   
}

Вот снимок экрана:

enter image description here

5 голосов
/ 18 февраля 2012

Если вы не используете оператор if и не устанавливаете вручную значение по умолчанию (после выяснения, что это такое), как это:

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

Я не уверен, что вы можете установить значение только для некоторых компонентов, но оставьте значение по умолчанию для других.

2 голосов
/ 09 марта 2016

Это поздний ответ, но для будущих читателей, по-видимому, нет способа вернуть ширину по умолчанию. В тот момент, когда вы определите метод pickerView:widthForComponent:, вам придется явно установить ширину всех компонентов, а не только некоторые из них.

...