標籤:
Dynamic Type 動態類型
1.比如字型。使用動態使用者自訂的系統字型。
-(void)updateFonts
{
UIFont *font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
self.nameLabel.font = font;
self.dataLabel.font = font;
}
2.註冊,擷取修改通知
當使用者修改了字型或者系統設定,會發送一個訊息,UIContentSizeCategoryDidChangeNotification
//....
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self
selector:@selector(updateFonts:)
name:UIContentSizeCategoryDidChangeNotification
object:nil];
!!!注意,記得移除
-(void)dealloc
{
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter removeObserver:self];
}
3.重新設定布局
intrinsicContentSize
nameLabel.leading = superview.leading + 8
nameField.leading = nameLabel.trailing + 8
nameField.trailing = superview.trailing - 8
4.擷取使用者佈建的字型大小,更改儲存格的高度
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self updateTableViewForDynamicTypeSize];
}
-(void)updateTableViewForDynamicTypeSize
{
static NSDictionary *cellHeightDicrionary;
if(!cellHeightDicrionary){
cellHeightDictionary = @{ UIContentSizeCategoryExtraSmall : @44,
UIContentSizeCategorySmall : @44,
UIContentSizeCategoryMedium : @44,
UIContentSizeCategoryLarge : @44,
UIContentSizeCategoryExtraLarge : @55,
UIContentSizeCategoryExtraExtraLarge : @65,
UIContentSizeCategoryExtraExtraExtraLarge : @75 };
}
NSString *userSize = [[UIApplication sharedApplication] preferredContentSizeCategory];
NSNumber *cellHeight = cellHeightDicrionary[userSize];
[self.tableView setRowHeigt:cellHeight.floatValue];
//然後再載入資料
[self.tableView reloadData];
}
5.Updating BNRItemCell
awakeFromNib
Constraint outlets
Placeholder constraints
Big Nerd iOS Programming 第20章 Dynamic Type 動態類型