私は現在、コア データのセットアップからピッカー ビューを動的に設定するプログラムに取り組んでいます。私はすべてデータ的に機能していますが、現在遭遇している問題はラベルの書式設定です。
ピッカーには、ツールバーの右側にボタンがあるアクションシートに独自のツールバーが表示されます。初期状態はダイヤルが2つ見える状態です。ボタンを押すと3つのダイヤルに変わります。
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *pickerLabel = (UILabel *)view;
CGSize limitSize = CGSizeMake(100.0f, 45.0f);
CGSize textSize;
CGRect labelRect;
NSString *title = @"";
switch (numberOfComponents){
case 2:
{
...gets strings from fetched data (varying length from 4 to 20+)
title = someString
}
case 3:
{
...same as above but for the second set of data.
title = someString
}
}
textSize = [title sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:limitSize lineBreakMode:UILineBreakModeWordWrap];
labelRect = CGRectMake(0, 0, textSize.width, textSize.height);
NSLog(@"length:%i title:%@",[title length],title);
NSLog(@"h:%f w:%f",textSize.height,textSize.width);
if (pickerLabel == nil)
{
pickerLabel = [[[UILabel alloc] initWithFrame:labelRect] autorelease];
[pickerLabel setFont:[UIFont systemFontOfSize:14]];
[pickerLabel setBackgroundColor:[UIColor clearColor]];
[pickerLabel setLineBreakMode:UILineBreakModeWordWrap];
[pickerLabel setTextAlignment:UITextAlignmentCenter];
[pickerLabel setNumberOfLines:2];
}
[pickerLabel setText:title];
return pickerLabel;
}
行の高さを手動で 32.0f に設定しました。2 番目のコンポーネントのラベルの一部が完全に機能しているという非常に奇妙な結果が得られます。しかし、まったく折り返されていないものもあれば、空白として表示されているものもあります。
すなわち: 芽キャベツはきれいに包まれます (右のコンポーネント)。しかし、牛乳とクリームは表示されません (牛乳のみが表示されます) 野菜はまったく表示されません。コードのどこが間違っていますか?