首页 » iOS编程(第4版) » iOS编程(第4版)全文在线阅读

《iOS编程(第4版)》20.2 响应用户首选字体的改变

关灯直达底部

用户修改了首选字体大小后,应用会收到UIContentSizeCategoryDidChangeNotification通知,可以注册该通知响应用户首选字体的改变,例如更新界面中文本控件的字体。

打开BNRDetailViewController.m,在initForNewItem:中将BNRDetailViewController对象注册为UIContentSizeCategoryDidChangeNotification的观察者,然后在dealloc中移除观察者,代码如下:

self.navigationItem.leftBarButtonItem = cancelItem;

}

// 注意不要将注册通知的代码写在if (isNew) {}中

NSNotificationCenter *defaultCenter =

[NSNotificationCenter defaultCenter];

[defaultCenter addObserver:self

selector:@selector(updateFonts)

name:UIContentSizeCategoryDidChangeNotification

object:nil];

}

return self;

}

- (void)dealloc

{

NSNotificationCenter *defaultCenter =

[NSNotificationCenter defaultCenter];

[defaultCenter removeObserver:self];

}

注意,用于响应UIContentSizeCategoryDidChangeNotification的方法是之前实现的updateFonts,viewWillAppear:中也会调用该方法。再次构建并运行应用,首先在设置应用中修改首选字体大小,然后返回应用,这次所有文本控件都会根据用户首选字体调整文字大小。

因为现在文本控件的文字大小会动态变化,所以下一节将调整文本控件的约束,支持动态字体。