iOS 的一點小記載 (三)

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容