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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[基础]iOS 可视化编程(全系列)

發布時間:2024/4/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [基础]iOS 可视化编程(全系列) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

所有文章目錄:http://my.oschina.net/ChenTF/blog/677112

本篇文章地址: http://my.oschina.net/ChenTF/blog/683042

會持續的更新所有歷史文章, 所以收藏的話請收藏上面的地址。

1.?背景

? ? 本人比較喜歡用Xib來寫項目, 效率高又不存在沖突問題, 很爽很方便(當然純代碼編程很多情況還是很有用的)。本篇文章將可視化編程用到的技術全部進行了統一整理, 相信全部看完時對于可視化編程了如指掌, 那么我們開始吧。

?

2. 他山之石

? ? 這有一位大牛對從原理講起, 到約束,?到自動布局, 講的非常精彩。學完記得回來哦!

  • 自動布局的基本原理:?http://blog.csdn.net/pucker/article/details/41832939
  • Interface Builder的使用:?http://blog.csdn.net/pucker/article/details/41843511
  • NSLayoutConstraint:?http://blog.csdn.net/pucker/article/details/45070955
  • VFL:?http://blog.csdn.net/pucker/article/details/45093483
  • 動態修改約束:?http://blog.csdn.net/pucker/article/details/45149759#t4
  • SizeClass的使用:?http://blog.csdn.net/pucker/article/details/49925335#t2
  • ????看完大神的文章, 相信大家對Xib已經非常的熟悉了, 那我再來補充些日常使用的技巧與經驗。

    ?

    3. 自定義VIew與Xib關聯

    ????需求: 項目中經常自定義一個控件, 可是父類不是UIViewController的話Xcode不提供Xib支持, 需要自己單獨創建Xib, 然后與代碼關聯起來。本節講的就是如何與代碼關聯起來。

    ????參考的話, 可以看我封裝的日歷選擇器 :http://my.oschina.net/ChenTF/blog/682971? ?

    3.1?代碼與View關聯

    ?

    3.2?清空File's的關聯, 如果不清空, 創建Xib時會崩潰

    ?

    3.3?清空File's的關聯

    ?

    3.4?初始化方式

    ? ? 建議在.h中提供一個類方法, 將初始化封裝到內, 我一般命名喜歡用 "+ ?(instancetype)ViewWithNib"。

    WBCellSubBarView *cellBar = [[[NSBundle mainBundle] loadNibNamed:@"WBCellSubBarView" owner:self options:nil] lastObject];cellBar.frame = CGRectMake(0, 0, kScreenBoundWidth, height);

    提示:

    • 一定記得要設置Frame
    • 通過Nib方式創建出來的對象, 不會走 "initWithFrame" 方法, 走的是"awakeFromNib"方法, 如果有初始化應寫在這里。

    3.5?參考:

    • Xib操作技巧:?http://my.oschina.net/joanfen/blog/314763?fromerr=GDndFVM4
    • VC關聯多個Xib:?http://www.cnblogs.com/minglz/archive/2012/12/11/2809368.html

    ?

    4. 自定義Interface Builder上的屬性

    4.1 效果圖

    ????一直很羨慕系統提供的視圖可以在Xib上直接修改屬性, 并且能立即看到變化的結果。本節就是自己實現的方式,?方框內的是自定義屬性。

    ?

    4.2 實現方式

    4.2.1?在自定義.h類中設置( IB_DESIGNABLE?/? IBInspectable )

    4.2.2?在.m中重寫set方法, 就能實現對應的功能

    ?

    4.3 內部探索

    • 初始化時的調用順序: ?initWithCoder -> 各個IBInspectable的屬性方法 -> layoutSubviews
    • 當在 "面板" 設置完屬性后, 在User Defined Runtime Attributes中會出現對應的設置, 再結合調用順序, 猜測是通過運行時來實現的

    ?

    5. 代碼與約束結合的最佳實踐

    5.1 約束動畫

    ????如何讓約束的修改也帶動畫?

    ????在動畫中, 執行setNeedsLayout, layoutIfNeeded方法, 就可以實現。

    例:

    [UIView animateWithDuration:0.3 animations:^{self.ViewWidthLayout.constant = self.bgWidth;[self setNeedsLayout];[self layoutIfNeeded];}];

    ?

    ? ? setNeedsLayout :?設置一個更新標示;?layoutIfNeeded :?立即更新約束。如果有更新標示的話, 則在更新約束時會調layoutSubviews方法。?

    ? ? 理解: "當在動畫中設置直接設置約束時, frame并沒有變化, 調用IfNeeded后, frame變化了, 所以就有了動畫效果。"

    ????當你對某個約束直接進行賦值時, 系統會自動調setNeedsLayout方法, 所以上面示例沒setNeedsLayout時也會調layoutSubviews方法。

    ?

    提醒:?

    ????? ? 1.updateConstraints方法并不太好用, 詳情:http://codingobjc.com/blog/2015/09/01/he-shi-shi-yong-updateconstraints/

    ing..

    轉載于:https://my.oschina.net/ChenTF/blog/683042

    總結

    以上是生活随笔為你收集整理的[基础]iOS 可视化编程(全系列)的全部內容,希望文章能夠幫你解決所遇到的問題。

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