2016-08-17 3 views
3

を示し理由:UIPickerView私はピッカービューとデータソースを追加し、このように委任白のボーダーで

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
    return _datas.count; 
} 

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

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { 
CGFloat width = SCREEN_W/_datas.count; 
    return width; 
} 

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component { 
    return kActionPickerRowHeight; 
} 


- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { 
    UILabel *label = [[UILabel alloc] init]; 
    label.frame = CGRectMake(0, 0, SCREEN_W/_datas.count, kActionPickerRowHeight); 
    label.textAlignment = NSTextAlignmentCenter; 
    label.text = [NSString stringWithFormat:@"%@",_datas[component][row]]; 
    label.font = [UIFont systemFontOfSize:12.f]; 

    label.layer.borderWidth = 1.f; 
    return label; 
} 

しかし、このようなピッカー表示:

enter image description here

あり右側に約150ピクセルの白い枠線が表示されます。秒フレーム:「私はピッカービューを設定しなかった問題がどのような原因が見つかった」VEの

は私が

+0

あなたはシミュレータまたは実際のデバイスでやっていますか? –

+0

@Mike Alter私はシミュレータと実機の両方で試しましたが、同じ問題です。 – jojoT

+0

これを使用してください:http://stackoverflow.com/a/965421/4033273 –

答えて

0

をデバッグするために、行の境界線とピッカーの境界線を示し、時間の正しい値。 - (void)layoutSubviewsにフレーム設定コードを書くと、dataSourceのメソッドが呼び出された後に呼び出され、正しく表示されませんでした。したがって、初期化後に手動でlayoutSubviewsを呼び出すと、問題を解決するためにi [self layoutIfNeed]を追加します。

1

アップデート方法に

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { 
CGFloat width = pickerView.frame.width/_datas.count; 
    return width; 
} 
+0

ありがとう、問題が解決しないのに、pickerView.frame.widthが問題を引き起こしていることがわかりました。そして今私はそれを修正しました。 – jojoT

関連する問題