2014-10-11 4 views
3

После изменения размера текста в настройках и возврата в приложение статические ячейки типа Basic и Subtitle и оставленные пустыми, пока вы не уйдете от просмотра или не перезагрузите приложение. Пользовательская статическая ячейка сохраняет свой текст.Динамический тип IOS 8 со Static TableView Cell - базовый и субтитр

Простой для тиражирования.

Создайте приложение с одним представлением, замените UIViewController на UiTableViewController. Изменение содержимого с динамической на статическую.

Set Стиль ячейки 0 = Обычай, ячейка 1 = Basic и ячейка 2 = Субтитры

Подключайте свойства всех

@property (weak, nonatomic) IBOutlet UILabel *customCell; 
@property (weak, nonatomic) IBOutlet UILabel *basicCell; 
@property (weak, nonatomic) IBOutlet UILabel *titleLabel; 
@property (weak, nonatomic) IBOutlet UILabel *subTitleLabel; 

добавить следующее viewDidLoad

NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; 
[defaultCenter addObserver:self selector:@selector(updateInterfaceForDynamicTypeSize)  name:UIContentSizeCategoryDidChangeNotification object:nil]; 


self.customCell.text = @"Custom Cell"; 
self.basicCell.text = @"Basic Cell"; 
self.titleLabel.text = @"My Title"; 
self.subTitleLabel.text = @"My Sub Title"; 

добавить следующий метод

-(void)updateInterfaceForDynamicTypeSize { 
UIFont *font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody]; 
self.customCell.font = font; 
self.basicCell.font = font; 
self.titleLabel.font = font; 
font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote]; 
self.subTitleLabel.font = font; 
[self.tableView reloadData]; 
} 

Запустите приложение - затем перейдите в Настройки и измените размер текста. Возврат к приложению и отображение только содержимого пользовательской ячейки.

Это было не в случае с IOS 7. Я что-то упустил или это ошибка?

ответ

1

Настройте ячейку в раскадровке, чтобы использовать пользовательский класс вместо неплатежа UITableViewCell

Простой пользовательский ячейки реализовать следующим образом:

// DynamicTypeResistantCell.h 
#import <UIKit/UIKit.h> 
@interface DynamicTypeResistantCell : UITableViewCell 

@end 


// DynamicTypeResistantCell.m 
@implementation DynamicTypeResistantCell 
- (void)_systemTextSizeChanged 
{ 
    // don't call super! 
} 
@end 

Тогда вы можете смело использовать основные и субтитров стилей и клетки сохраняют свои содержимое после изменения размера динамического типа.

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