<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS開(kāi)發(fā)-視圖與視圖控制器生命周期

      在MVC模型中,V指view,負(fù)責(zé)用戶界面的顯示、處理用戶輸入,并將輸入傳遞給控制器。C是指ViewController,充當(dāng)模型和視圖之間的中介。控制器接收用戶輸入,處理用戶請(qǐng)求,并將結(jié)果傳遞給視圖以更新顯示。本文詳細(xì)介紹在iOS開(kāi)發(fā)中UIView與UIViewController的生命周期。

      UIView 的生命周期

      主要包括以下關(guān)鍵階段:

      1. 初始化 (initWithFrame: or initWithCoder:)
      2. 添加到父視圖 (willMoveToSuperview: or didMoveToSuperview)
      3. 布局子視圖 (layoutSubviews)
      4. 繪制 (drawRect:)
      5. 移除父視圖 (willMoveFromSuperview: or didMoveFromSuperview)
      6. 銷毀 (dealloc)

      1. 初始化

      initWithFrame:

      在代碼中創(chuàng)建視圖時(shí)調(diào)用。

      - (instancetype)initWithFrame:(CGRect)frame {
          self = [super initWithFrame:frame];
          if (self) {
              // 自定義初始化
          }
          return self;
      }
      
      initWithCoder:

      用于從nib文件或Storyboard中加載視圖。這個(gè)方法會(huì)在視圖從接口構(gòu)建器文件(.xib或.storyboard)解碼時(shí)調(diào)用。參數(shù):NSCoder,用于解碼視圖屬性的解碼器對(duì)象

      - (instancetype)initWithCoder:(NSCoder *)coder {
          self = [super initWithCoder:coder];
          if (self) {
              // 自定義初始化
          }
          return self;
      }
      

      2. 添加到父視圖

      willMoveToSuperview:

      視圖將要被添加到父視圖時(shí)調(diào)用。

      - (void)willMoveToSuperview:(UIView *)newSuperview {
          [super willMoveToSuperview:newSuperview];
          // 自定義代碼
      }
      
      didMoveToSuperview

      視圖已經(jīng)被添加到父視圖時(shí)調(diào)用。

      - (void)didMoveToSuperview {
          [super didMoveToSuperview];
          // 自定義代碼
      }
      

      3. 布局子視圖

      layoutSubviews

      視圖的布局發(fā)生變化時(shí)調(diào)用,用于調(diào)整子視圖的布局。

      - (void)layoutSubviews {
          [super layoutSubviews];
          // 自定義子視圖布局代碼
      }
      

      4. 繪制

      drawRect:

      視圖需要繪制其內(nèi)容時(shí)調(diào)用。這是自定義繪制代碼的地方。

      - (void)drawRect:(CGRect)rect {
          // 自定義繪制代碼
      }
      

      5. 移除父視圖

      willMoveFromSuperview:

      視圖將要從父視圖中移除時(shí)調(diào)用。

      - (void)willMoveFromSuperview:(UIView *)newSuperview {
          [super willMoveFromSuperview:newSuperview];
          // 自定義代碼
      }
      
      didMoveFromSuperview

      視圖已經(jīng)從父視圖中移除時(shí)調(diào)用。

      - (void)didMoveFromSuperview {
          [super didMoveFromSuperview];
          // 自定義代碼
      }
      

      6. 銷毀

      dealloc

      視圖被銷毀時(shí)調(diào)用,用于釋放資源。

      - (void)dealloc {
          // 釋放資源
      }
      

      視圖控制器 (UIViewController) 的生命周期

      UIView 與 UIViewController 生命周期的關(guān)系

      UIView 的生命周期方法通常在 UIViewController 的生命周期方法中被調(diào)用。例如:

      • UIViewControllerviewDidLoad 方法中,視圖會(huì)被初始化和配置。
      • UIViewControllerviewWillAppear: 方法中,視圖會(huì)被添加到窗口并準(zhǔn)備顯示。
      • UIViewControllerviewWillDisappear: 方法中,視圖會(huì)從窗口中移除。

      1. init

      init 方法是視圖控制器的初始化方法。通常用來(lái)初始化視圖控制器的狀態(tài),在這里進(jìn)行分配內(nèi)存與初始化實(shí)例變量。

      - (instancetype)init {
          self = [super init];
          if (self) {
              // 初始化代碼
          }
          return self;
      }
      

      2. loadView

      loadView 方法是用于創(chuàng)建視圖控制器的視圖層次結(jié)構(gòu)的。只有當(dāng)視圖控制器的視圖屬性被訪問(wèn)且為空時(shí),才會(huì)調(diào)用這個(gè)方法。通常不需要手動(dòng)重寫(xiě)這個(gè)方法,除非需要自定義視圖層次結(jié)構(gòu)。

      - (void)loadView {
          // 創(chuàng)建視圖層次結(jié)構(gòu)
          UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
          view.backgroundColor = [UIColor whiteColor];
          self.view = view;
      }
      

      3. viewDidLoad

      viewDidLoad 方法在視圖控制器的視圖加載到內(nèi)存后調(diào)用。適合在這里做視圖的進(jìn)一步初始化和配置。通常在這里添加子視圖并設(shè)置其屬性,或者執(zhí)行一次性初始化任務(wù),如設(shè)置標(biāo)簽按鈕等UI組件。

      - (void)viewDidLoad {
          [super viewDidLoad];
          // 視圖加載后的初始化
          self.view.backgroundColor = [UIColor whiteColor];
          UILabel *label = [[UILabel alloc] initWithFrame:self.view.bounds];
          label.text = @"Hello, World!";
          label.textAlignment = NSTextAlignmentCenter;
          [self.view addSubview:label];
      }
      

      4. viewWillAppear:

      viewWillAppear: 方法在視圖即將被添加到視圖層次結(jié)構(gòu)中并顯示在屏幕上時(shí)調(diào)用。適合在這里做視圖顯示前的準(zhǔn)備工作,例如更新視圖內(nèi)容。

      - (void)viewWillAppear:(BOOL)animated {
          [super viewWillAppear:animated];
          // 視圖即將顯示
      }
      

      5. viewDidAppear:

      viewDidAppear: 方法在視圖已經(jīng)被添加到視圖層次結(jié)構(gòu)中并顯示在屏幕上時(shí)調(diào)用。適合在這里啟動(dòng)需要在視圖顯示后進(jìn)行的任務(wù),例如動(dòng)畫(huà)和數(shù)據(jù)加載。

      - (void)viewDidAppear:(BOOL)animated {
          [super viewDidAppear:animated];
          // 視圖已經(jīng)顯示
      }
      

      6. viewWillLayoutSubviews

      viewWillLayoutSubviews 方法在視圖控制器的視圖即將布局其子視圖時(shí)調(diào)用。適合在這里更新子視圖的布局。

      - (void)viewWillLayoutSubviews {
          [super viewWillLayoutSubviews];
          // 更新子視圖布局
      }
      

      7. viewDidLayoutSubviews

      viewDidLayoutSubviews 方法在視圖控制器的視圖已經(jīng)布局其子視圖時(shí)調(diào)用。適合在這里做布局完成后的調(diào)整。

      - (void)viewDidLayoutSubviews {
          [super viewDidLayoutSubviews];
          // 布局完成后的調(diào)整
      }
      

      8. viewWillDisappear:

      viewWillDisappear: 方法在視圖即將從視圖層次結(jié)構(gòu)中移除時(shí)調(diào)用。適合在這里做視圖消失前的清理工作。

      - (void)viewWillDisappear:(BOOL)animated {
          [super viewWillDisappear:animated];
          // 視圖即將消失
      }
      

      9. viewDidDisappear:

      viewDidDisappear: 方法在視圖已經(jīng)從視圖層次結(jié)構(gòu)中移除時(shí)調(diào)用。適合在這里做視圖消失后的清理工作。

      - (void)viewDidDisappear:(BOOL)animated {
          [super viewDidDisappear:animated];
          // 視圖已經(jīng)消失
      }
      

      10. dealloc

      dealloc 方法在視圖控制器被銷毀時(shí)調(diào)用。適合在這里做資源釋放和清理工作。

      - (void)dealloc {
          // 釋放資源
      }
      

      參考:

      posted @ 2024-06-30 17:12  機(jī)械心  閱讀(136)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产视色精品亚洲一区二区| 日韩一区精品视频一区二区| 日本黄色三级一区二区三区| 国产不卡av一区二区| 亚洲中文字幕伊人久久无码 | 99国产精品欧美一区二区三区| 99久久成人亚洲精品观看| 久久综合激情网| 欧美成人www免费全部网站| 国产精品九九九一区二区| 亚洲欧美综合中文| 潮喷无码正在播放| 无套内谢极品少妇视频| 欧美日本激情| 插入中文字幕在线一区二区三区| 亚洲一区二区三区自拍高清| 国模少妇无码一区二区三区| 亚洲av中文一区二区| 中国女人熟毛茸茸A毛片| 久久亚洲精品无码播放| gogogo高清在线播放免费| 国产中文字幕精品喷潮| 无套内谢少妇高清毛片| 无码人妻丰满熟妇啪啪欧美| 精品人妻系列无码人妻漫画 | 久久综合国产色美利坚| 国产中年熟女高潮大集合| 久久久无码精品国产一区| 亚洲国产精品午夜福利| 自偷自拍亚洲综合精品| 97久久精品人人澡人人爽| 国产精品国三级国产av| 精品久久久久无码| AV喷水高潮喷水在线观看COM| 美女18禁一区二区三区视频| 国内自拍偷拍福利视频看看| 亚洲欧美综合人成在线| 国产成人精品中文字幕| 国产粉嫩区一区二区三区| 亚洲中文字幕无码av永久| 欧美日本一区二区视频在线观看|