How to Implement
- [UIPickerViewDelegate pickerView:pickerView viewForRow:forComponent:reusingView:] から adjustsFontSizeToFitWidth と minimumScaleFactor を指定した UILabel を返す。
- [UIPickerViewDelegate pickerView:pickerView viewForRow:forComponent:reusingView:] を定義すると [UIPickerViewDelegate pickerView:titleForRow:forComponent:] が Cocoa SDK から呼ばれなくなるのでそのまま使える(使いたく無ければ適当に処理を追加)。
Example
UIPickerViewDelegate を実装したクラスで以下を定義。
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { return [NSString stringWithFormat:@"row=%ld component=%ld", (long)row, (long)component]; } - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { UILabel *label = (UILabel *)view; if (!label) { CGSize rowSize = [pickerView rowSizeForComponent:component]; label = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, rowSize.width, rowSize.height)]; } label.text = [self pickerView:pickerView titleForRow:row forComponent:component]; label.font = [UIFont systemFontOfSize:20]; label.textAlignment = NSTextAlignmentCenter; label.adjustsFontSizeToFitWidth = YES; label.minimumScaleFactor = 0.1; return label; }