frame和bounds的重新認識
- frame
- 以
父控件
內容
的左上角為坐標原點, 計算出的控件自己
矩形框
的位置和尺寸
- 以
- bounds
- 以
控件自己
內容
的左上角為坐標原點, 計算出的控件自己
矩形框
的位置和尺寸
- 以
- 概括
- frame.size == bounds.size
- scrollView.bounds.origin == scrollView.contentOffset
bounds和frame的區別
bounds和frame的區別.png
矩形框和內容的理解
- 矩形框
- 控件自己的顯示位置和尺寸
- 內容
- 控件內部的東西,比如它的子控件
在使用UITableViewController過程中,可能會出現的錯誤
@interface TestTableViewController : UITableViewController
@end
'-[UITableViewController loadView] instantiated view controller with identifier "UIViewController-BYZ-38-t0r" from storyboard "Main", but didn't get a UITableView.'
- 造成這個錯誤的原因
- 錯誤地將一個UIViewController當做UITableViewController來用
- 錯誤做法
Snip20151108_134.png
- 正確做法
Snip20151108_135.png
Snip20151108_137.png
contentInset的調整
- 默認情況下, 如果一個控制器A處在導航控制器管理中, 并且控制器A的第一個子控件是UIScrollView, 那么就會自動調整這個UIScrollView的contentInset
- UIEdgeInsetsMake(64, 0, 0, 0) // 有導航欄
- UIEdgeInsetsMake(20, 0, 0, 0) // 沒有導航欄
- 默認情況下, 如果一個控制器A處在導航控制器管理中, 并且導航控制器又處在UITabBarController管理中, 并且控制器A的第一個子控件是UIScrollView, 那么就會自動調整這個UIScrollView的contentInset
- UIEdgeInsetsMake(64, 0, 49, 0)
- 如何禁止上述的默認問題?
控制器A.automaticallyAdjustsScrollViewInsets = NO;
文字內容換行
- 如何讓storyboard\xib中的文字內容換行
- 快捷鍵: option + 回車鍵
- 在storyboard\xib輸入\n是無法實現換行的
- 在代碼中輸入\n是可以實現換行的
self.label.text = @"534534534\n5345345\n5345";
修改狀態欄樣式
- 使用UIApplication來管理
Snip20151108_152.png
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
在Info.plist中做了圖中的配置,可能會出現以下警告信息
Snip20151108_153.png
- 使用UIViewController來管理
@implementation CLLoginRegisterViewController
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
@end
在xib\storyboard中使用KVC
Snip20151108_177.png