UIPickerViewが1つあります。これには200個近くのアイテムがあり、各アイテムには長いテキストが含まれているため、UIPickerViewのフォントサイズを変更したいと思います。どうすれば変更できますか?可能です?誰でも私を助けることができますか?ありがとう!
Yuva.M
ピッカーのデリゲートにpickerView:viewForRow:forComponent:reusingView:
メソッドを実装する必要があります
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel* tView = (UILabel*)view;
if (!tView){
tView = [[UILabel alloc] init];
// Setup label properties - frame, font, colors etc
...
}
// Fill the label text here
...
return tView;
}
Swift iOS8の場合、これをデリゲートに追加できます。
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView {
var pickerLabel = view as? UILabel;
if (pickerLabel == nil)
{
pickerLabel = UILabel()
pickerLabel?.font = UIFont(name: "Montserrat", size: 16)
pickerLabel?.textAlignment = NSTextAlignment.Center
}
pickerLabel?.text = fetchLabelForRowNumber(row)
return pickerLabel!;
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel* pickerLabel = (UILabel*)view;
if (!pickerLabel)
{
pickerLabel = [[UILabel alloc] init];
pickerLabel.font = [UIFont fontWithName:@"SourceSansPro-Semibold" size:16];
pickerLabel.textAlignment=NSTextAlignmentCenter;
}
[pickerLabel setText:[self.data objectAtIndex:row]];
return pickerLabel;
}
Swift 4: @Alessandro Ornanoの回答を更新し、Force_cast違反エラーを回避するには:
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
var label = UILabel()
if let v = view as? UILabel { label = v }
label.font = UIFont (name: "Helvetica Neue", size: 10)
label.text = dataArray[row]
label.textAlignment = .center
return label
}
これを試してください、それは役立つはずです:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel* tView = (UILabel*)view;
if (!tView){
tView = [[UILabel alloc] init];
// Setup label properties - frame, font, colors etc
...
//adjustsFontSizeToFitWidth property to YES
tView.minimumFontSize = 8.;
tView.adjustsFontSizeToFitWidth = YES;
}
// Fill the label text here
...
return tView;
}
// altro modo completo sembrerebbe...
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view {
UILabel *pickerLabel = (UILabel *)view;
if (pickerLabel == nil) {
CGRect frame = CGRectMake(0.0, 0.0, 80, 32);
pickerLabel = [[[UILabel alloc] initWithFrame:frame] autorelease];
[pickerLabel setTextAlignment:UITextAlignmentLeft];
[pickerLabel setBackgroundColor:[UIColor clearColor]];
[pickerLabel setFont:[UIFont boldSystemFontOfSize:15]];
}
[pickerLabel setText:[pickerDataArray objectAtIndex:row]];
return pickerLabel;
}
Swift 3 |[〜#〜] autoshrink [〜#〜]
adjustsFontSizeToFitWidth=true
およびminimumScaleFactor=0.5
を設定します
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
var label: UILabel
if let view = view as? UILabel { label = view }
else { label = UILabel() }
label.text = "My Picker Text"
label.textAlignment = .center
label.font = UIFont.boldSystemFont(ofSize: 20)
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
return label
}
Swift 4.x
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
var label = UILabel()
if let v = view {
label = v as! UILabel
}
label.font = UIFont (name: "Helvetica Neue", size: 10)
label.text = dataArray[row]
label.textAlignment = .center
return label
}
Objective Cの場合
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel* pickerLabel = (UILabel*)view;
if (!pickerLabel){
pickerLabel = [[UILabel alloc] init];
// Setup label properties - frame, font, colors etc
[pickerLabel setFont:[UIFont fontWithName:LATO_REGULAR_FONT size:SIZE_SEMIBOLD_FONT]];
pickerLabel.textColor = primaryTextColor;
pickerLabel.textAlignment = NSTextAlignmentCenter;
}
// Fill the label text here
pickerLabel.text = self.dataSourceArray[row];
return pickerLabel;
}
Swift 2.の場合
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView{
var label = view as! UILabel!
if label == nil {
label = UILabel()
}
label.font = LATO_REGULAR_FONT_17
label.text = dataArray[row] as? String
label.textAlignment = .Center
return label
}