前言:今天在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的約束的時候,也需要制定他的大小和座標,否則,編輯器會提示警告。以實際操作來演示下如...