iphone - ¿Cómo cambiar el tamaño de la fuente en UIPickerView?
font-size (8)
Para ajuste de fuente de filas UIPickerView
- (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;
}
Tengo un UIPickerView. Esto tiene cerca de 200 elementos, cada elemento tiene textos largos, por lo tanto, quiero cambiar el tamaño del tamaño de letra de UIPickerView. ¿Cómo puedo cambiarlo? ¿Es posible? ¿Alguien puede ayudarme? Gracias !
Yuva.M
Actualice en Swift para iOS8, puede agregar esto a su delegado:
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!;
}
Prueba esto, debería ayudar:
- (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;
}
pickerView:viewForRow:forComponent:reusingView:
implementar pickerView:viewForRow:forComponent:reusingView:
method en delegado del selector
- (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;
}
Para 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;
}
Para Swift 2.3
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
}
Swift 3 | AUTOSHRINK
Establecer los adjustsFontSizeToFitWidth=true
y 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
}
Swift 4: para actualizar la respuesta de @Alessandro Ornano y evitar el error de violación de 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
}