2014-02-01 4 views
3

У меня есть UITextView, настроенный в раскадровке. Он установлен в определенном размере. Я хочу иметь возможность изменять размер шрифта в зависимости от количества текста. Текстовое представление не может быть отредактировано пользователем и оно должно обновляться только один раз. есть идеи как это сделать?Изменить размер шрифта в соответствии с UITextView

ответ

7

Только UITextField (однострочный вход) имеет adjustsFontSizeToFitWidth и minimumFontSize. С UITextView вам придется запрограммировать это самостоятельно.

static const CGFloat MAX_FONT_SIZE = 16.0; 
static const CGFloat MIN_FONT_SIZE = 4.0; 

@interface MyViewController() 

// I haven't dealt with Storyboard/Interface builder in years, 
// so this is my guess on how you link the GUI to code 
@property(nonatomic, strong) IBOutlet UITextView* textView; 

- (void)textDidChange:(UITextView*)textView; 

@end 

@implementation MyViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self.textView addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged]; 
    self.textView.font = [UIFont systemFontOfSize:MAX_FONT_SIZE]; 
} 

- (void)textDidChange:(UITextView*)textView 
{ 
    // You need to adjust this sizing algorithm to your needs. 
    // The following is oversimplistic. 
    self.textView.font = [UIFont systemFontOfSize:MAX(
     MAX_FONT_SIZE - textView.text.length, 
     MIN_FONT_SIZE 
    )]; 
} 

@end 
Смежные вопросы