2018年11月6日 星期二
UIApplicationWillChangeStatusBarOrientationNotification v.s. UIApplicationDidChangeStatusBarOrientationNotification
結論:
UIApplicationWillChangeStatusBarOrientationNotification
會先被呼叫,而且userInfo 是傳送將要轉換的 orientation。
UIApplicationDidChangeStatusBarOrientationNotification
後被呼叫,但userInfo是傳送轉換前的 orientation。
code:
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(statusOrientationWillChange:)
name:UIApplicationWillChangeStatusBarOrientationNotification object:nil];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(statusOrientationDidChange:)
name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
- (void)statusOrientationWillChange:(NSNotification *)notification {
if (notification.userInfo != nil && notification.userInfo[UIApplicationStatusBarOrientationUserInfoKey] != nil) {
UIInterfaceOrientation orientation = (UIInterfaceOrientation)[(NSNumber *)notification.userInfo[UIApplicationStatusBarOrientationUserInfoKey] integerValue];
if (UIInterfaceOrientationIsLandscape(orientation)) {
self.isLandscape = YES;
} else {
self.isLandscape = NO;
}
}
[self.tableView reloadData];
}
- (void)statusOrientationDidChange:(NSNotification *)notification {
if (notification.userInfo != nil && notification.userInfo[UIApplicationStatusBarOrientationUserInfoKey] != nil) {
UIInterfaceOrientation orientation = (UIInterfaceOrientation)[(NSNumber *)notification.userInfo[UIApplicationStatusBarOrientationUserInfoKey] integerValue];
if (UIInterfaceOrientationIsLandscape(orientation)) {
self.isLandscape = YES;
} else {
self.isLandscape = NO;
}
}
}
Strange thing: A - 2 > 0 is not equvalent to A > 2
(lldb) po self.customFields.count - 2 > 0
true
(lldb) po self.customFields.count > 2
false
(lldb) po self.customFields
<__NSArrayM 0x108e54540>(
)
(lldb) po self.customFields.count
<nil>
true
(lldb) po self.customFields.count > 2
false
(lldb) po self.customFields
<__NSArrayM 0x108e54540>(
)
(lldb) po self.customFields.count
<nil>
2018年11月2日 星期五
reuse custom tableview cell
當你用dynamic style cell的時候
所有關於cell的改變都要基於cell source
所以最好的方式就是直接create a Class for table view source
讓整個改動都變得有彈性
不要直接去改當下那個cell,那是不合邏輯的,而且你會修bug修不完
例如,你從coredate的一個表中拿到資料,不要直接拿來用
創一個class去包它,這個class可以自由加入你要的其他設定給你的custom table cell
所有關於cell的改變都要基於cell source
所以最好的方式就是直接create a Class for table view source
讓整個改動都變得有彈性
不要直接去改當下那個cell,那是不合邏輯的,而且你會修bug修不完
例如,你從coredate的一個表中拿到資料,不要直接拿來用
創一個class去包它,這個class可以自由加入你要的其他設定給你的custom table cell
訂閱:
文章 (Atom)