Изменение размера текста в Pickerview - PullRequest
1 голос
/ 07 апреля 2010

Как мы можем изменить размер текста в окне выбора?

Кто-нибудь, пожалуйста, помогите.

Ответы [ 5 ]

6 голосов
/ 09 апреля 2010

Вы можете изменить размер шрифта UIPickerView, используя код:

 - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view {
            UILabel *retval = (id)view;
            if (!retval) {
                retval= [[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)] autorelease];
            }

            retval.font = [UIFont systemFontOfSize:22];

       return retval;
    }
4 голосов
/ 20 февраля 2011

Для полноты кода в коде yakub_moriss отсутствует одна строка, которая была в сообщении, сообщенном indragie. Без строки как

retval.text = [pickerViewArray objectAtIndex:row];

сборщик будет пуст.

3 голосов
/ 17 мая 2012

Это также отличный способ изменить выравнивание текста в компоненте, измените textAlignment метки возврата.

Кроме того, фон для метки должен быть очищен:

    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
    {
        UILabel *retval = (id)view;
        if (!retval) {
            retval = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 
                      [pickerView rowSizeForComponent:component].width, 
                      [pickerView rowSizeForComponent:component].height)];
        }
        retval.opaque = NO;
        retval.backgroundColor = [UIColor clearColor];
        retval.font = [UIFont systemFontOfSize:28];
        if (component == 0) {
            retval.textAlignment = UITextAlignmentRight;
            retval.text = [NSString stringWithFormat:@"%d ", row];
        } else {
            retval.textAlignment = UITextAlignmentLeft;
            retval.text = [NSString stringWithFormat:@" .%d", row];
        }
        return retval;
    }

    - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
    {
        if (component == 0) { 
            return 100;
        }
        return 88;
    }
0 голосов
/ 23 июня 2013

Попробуйте это https://github.com/kafejo/CCPicker это очень легко подобрать :) 1003 *

0 голосов
/ 30 сентября 2012

Я использую категорию для этого. Это зависит от этой другой категории, у меня есть: http://compileyouidontevenknowyou.blogspot.com/2012/06/adding-properties-to-class-you-dont.html.

В любом случае, это выглядит так:

#import <UIKit/UIKit.h>

@interface UIPickerView (CustomViewForRow)

@property (nonatomic, strong) UIFont *customViewForRowFont;

- (UIView *)customViewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;

@end

и .m

#import "UIPickerView+CustomViewForRow.h"
#import "NSObject+AssociatedObjectSupport.h"

@implementation UIPickerView (CustomViewForRow)


static char keyForCustomViewForRowFont;
- (UIFont *)customViewForRowFont {
    UIFont *retVal = [self associatedObject:&keyForCustomViewForRowFont];
    if (!retVal)
        retVal = [UIFont boldSystemFontOfSize:17];
    return retVal;
}

- (void)setCustomViewForRowFont:(UIFont *)customViewForRowFont {
    [self setAssociatedObject:customViewForRowFont forKey:&keyForCustomViewForRowFont];
}

- (UIView *)customViewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    UILabel *label;
    if (!view) {
        view = [[UIView alloc] init];
        CGRect frame = CGRectZero;
        frame.size = [self rowSizeForComponent:component];
        view.frame = frame;
        view.backgroundColor = UIColor.clearColor;

        label = [[UILabel alloc] init];
        label.font = self.customViewForRowFont;
        label.backgroundColor = [UIColor clearColor];
        frame = view.bounds;
        frame.origin.x += 7;
        frame.size.width -= 14;
        label.frame = frame;
        [view addSubview:label];
    }

    label = [view.subviews objectAtIndex:0];
    @try {
        NSString *text = [self.delegate pickerView:self titleForRow:row forComponent:component];
        if (!text)
            text = @"???";
        label.text = text;
    } @catch (NSException *e) {
        label.text = @"???";
    }

    return view;
}

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...