2016-08-17 2 views
3

ich eine Picker Ansicht und die Datenquelle hinzugefügt und wie folgt übertragen:Warum UIPickerView zeigt mit einem weißen Rand

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

Aber die Picker-Display wie folgt aus:

enter image description here

Es gibt eine weißer Rand ca. 150px auf der rechten Seite.

zeige ich die Reihe der Grenze und Grenze des Picker

+0

machst du im Simulator oder realen Gerät? –

+0

@Mike Alter Ich habe es sowohl im Simulator als auch im echten Gerät ausprobiert, gleiches Problem. – jojoT

+0

verwenden Sie dies: http://StackOverflow.com/A/965421/4033273 –

Antwort

0

ich zu debuggen habe festgestellt, welche Ursache das Problem: Ich kann nicht die Picker Ansicht gesetzt haben 's Rahmen korrekte Werte in der Zeit. Während ich den Frame-Setting-Code in - (void) layoutSubviews schreibe und er nach den Methoden der dataSource aufgerufen wurde, konnte er nicht korrekt angezeigt werden. So habe ich plus [self layoutIfNeed] um layoutSubviews manuell nach der Initialisierung aufzurufen, und Problem gelöst.

1

Update-Methode zu

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

Vielen Dank, auch wenn es das Problem nicht löst, bemerken Sie, dass pickerview.frame.width das Problem verursacht. Und ich habe es gerade jetzt behoben. – jojoT

Verwandte Themen