日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UIViewController 小结

發布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UIViewController 小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 生命周期

  • init方法中view仍然是nil,此時,如果寫了self.view,直接調用loadView。
  • 看名字也知道,loadView在viewDidLoad之前。
  • initWithNibName:bundle:,designated初始化方法
  • 2 代碼組織

  • init,只有需要傳一些參數的時候,才需要 不要出現self.view,只做普通屬性賦值(如model,詳情頁url等)
  • viewDidLoad中 組裝好subview
  • viewWilAppear中 處理數據相關,處理系統級任務(比如statusbar、網絡監聽等)
  • viewDidLayoutSubviews中 處理布局
  • subview在getter中初始化
  • 瘦身 ViewModel/Present + category、RAC
  • 一個不符合規范的案例,會導致錯誤。

    //first vc + (instancetype)initWithUrl:(NSString *)url {ViewController *controller = [ViewController new]; //已經在next vc的init中執行了viewDidLoad,而此時url還沒有傳過去controller.url = url;return controller; }//next vc #pragma mark - life cycle - (instancetype)init {self = [super init];if(self) {[self.view addSubview: self.webView]; //應該寫在viewDidLoad中}return self; }- (void)viewDidLoad { //下面兩句應該寫在viewWillAppear:中[self startLoading];[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.url]]]; } 復制代碼

    3 一些應用

    3.1 ChildVC + ScrollView

    比如頭條,上面有一個橫拉的欄目View,下面才是ChildVC的view 做法:ScrollView + VCs

    • ScrollView中實際上是多個childVC的根view
    • 創建childVC的時候,設置好frame,包括橫向偏移量。

    注意

  • 因為[scrollView addSubview:childVC.view],已經調用了childVC.view,所以這是已經調用了childVC的loadView和viewDidLoad方法。
  • addChildViewController后,childVC的生命周期方法,如viewWillAppear、viewDidAppear等,就跟隨父VC了自動處理。
  • 優化:

  • 可以使用displayVC,cachedVCs,緩存數組,內存預警或進入后臺時清理cachedVCs。
  • 點擊專欄引發的更換VC,
  • /添加一個 childViewController UIViewController *vc = [UIViewController new]; [self addChildViewController:vc]; vc.view.frame = ..; [self.view addSubview:vc.view]; [vc didMoveToParentViewController:self];//移除一個 childViewController [vc willMoveToParentViewController:nil]; [vc.view removeFromSuperview]; [vc removeFromParentViewController]; 復制代碼

    3.2 ChildVC + UIPageViewController

    實現相冊瀏覽功能,圖片放縮

    4 通用做法

    4.1 隱藏狀態欄

    #pragma mark - statusbar -(BOOL)prefersStatusBarHidden {return YES; } 復制代碼

    轉載于:https://juejin.im/post/5d077f815188252354279659

    總結

    以上是生活随笔為你收集整理的UIViewController 小结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。