IOS Layer的 自動布局

2021-07-01 21:21:36 字數 2105 閱讀 9075

前言:今天在stackoverflow上給乙個外國友人回答問題的時候,遇到了layer的自動布局的問題。這裡寫出來,分享給需要的人。

ios 的calayer到目前為止不支援autolayout也不支援autoresizingmask。

如果,要繪製乙個漸變的顏色,作為背景色。定義乙個配置函式

-(void)setupcagradientlayer:(cagradientlayer *)gradient
不使用作為背景的話,一種直接的方式就是使用layer進行繪製

很簡單的繪製

#import "viewcontroller.h"

@inte***ce

viewcontroller ()

@property (strong,nonatomic) cagradientlayer * gradient;

@end

@implementation

viewcontroller

- (void)viewdidload

效果圖

但是,橫屏後就發現不對了

最直觀的解決方案就是,在進行view的bounds改變的時候,進行layer的大小調整。

**很簡單,由於在view的bounds改變的時候,在對應的controller會呼叫viewdidlayoutsubviews

所以,在上面的viewcontroller中加入如下**,

-(void)viewdidlayoutsubviews
則橫屏正常

但是,我們都知道,在橫豎屏切換的時候,ios會自動生成乙個動畫,如果用粗糙的解決方案,只是在動畫結束後改變了frame,動畫的過程中仍然能夠看淡空白

如圖

由於ios對view的支援較好,不管是使用auto layout,還是autoresizingmask,都很方便。所以,一種比較好的解決方案就是使用view來處理。

把layer繫結到view

定義乙個view,把他的layer的class設定為cagradientclass

#import 

@inte***ce

backgrundview : uiview

@end

#import "backgrundview.h"

@inte***ce

backgrundview()

@end

@implementation

backgrundview

+(class)layerclass

@end

然後,使用這個view,設定autoresizingmask

#import "viewcontroller.h"

#import "backgrundview.h"

@inte***ce

viewcontroller ()

@property backgrundview * backgroundview;

@end

@implementation

viewcontroller

- (void)viewdidload

@end

再看看切換的動畫(生成的gif有點水印,諒解)

歡迎關注我的ios-sdk詳解專欄

我自己寫的乙個下拉重新整理庫

iOS layer層的轉場動畫

layer層的轉場動畫 直接上 void viewdidload void btnfun 屬性 說明type 動畫過渡型別 subtype 動畫過度方向 有4種分別是 fromleft,fromright,fromtop and frombottom。不是所有的type都有subtype start...

iOS scrollView的自動布局

傳送門 xcode6中極大的增強了ib中自動布局的能力,下面就通過對刺兒頭scrollview進行一次自動布局實戰,看看自動布局在xcode6中到底值不值得使用。說 uiscrollview是個刺兒頭,實在沒有誇張,這是由於scrollview本身contentsize contentinsets等...

IOS自動布局

使用相對布局之後,可以增加開發的速度,一直用frame的方式,混亂。使用相對布局之後,之前以設定frame的方式來取設定view將沒有效果 除了controller的view 同設定frame類似的時,在設定view的約束的時候,也需要制定他的大小和座標,否則,編輯器會提示警告。以實際操作來演示下如...