2012-02-18 19 views
2

UIPickerViewのコンポーネント幅をデリゲートメソッド– pickerView:widthForComponent:で設定できますが、2つのコンポーネントがあり、最初のコンポーネントの幅を変更して2番目のコンポーネントの幅をデフォルト値(iOS SDKが把握するもの)。どうすればこれを達成できますか?あなたはこのような(それが何であるかを発見した後)、デフォルト値を設定し、手動でif文と使用しない限り、iOS - UIPickerViewコンポーネントの幅を変更する

答えて

4

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

を私はあなただけのためのいくつかの値を設定することができますかわかりません他のコンポーネントのデフォルトの引き継ぎを可能にします。

+2

これはまさに私が求めていることです。デフォルトの幅を変更したくないコンポーネントのデフォルト値をどのように戻すことができますか。 –

6

ピッカービューは、ピッカーにあるコンポーネントの量に基づいてコンポーネントを分割します。コンポーネントのデフォルト値はありません。しかし、あなたはまだこれを試すことができます。

そのためには、コンポーネントの幅をパーセントスタイルで設定してみてください。ここで

-(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

2

これは後半の答えですが、将来の読者のために、明らかに「デフォルト」の幅を返す方法はありません。 pickerView:widthForComponent:メソッドを定義する瞬間に、一部のコンポーネントだけでなく、すべてのコンポーネントの幅を明示的に設定する必要があります。

関連する問題