iOS之 重繪機制

2022-03-19 07:07:34 字數 1400 閱讀 7052

最近在看core animation , 今天來談談calayer 和 uiview 中的重繪的一些認識:

我們都知道uiview裡面有個成員layer,利用這個這個layer我們可以設定一些圓角,陰影什麼的,或者

self.view.layer.contents = (__bridge id)([uiimage imagenamed:@"calayer_bg"].cgimage);

在這裡我就不過多的闡述uiview和calayer的異同了。

建立乙個calayer的乙個子類customlayer,重寫

@implementation customlayer

// 重寫該方法,在該方法內繪製圖形

- (void)drawincontext:(cgcontextref)ctx

@end

然後再某個vc上進行使用

.....

customlayer *layer = [customlayer layer];

// 設定layer的屬性

layer.backgroundcolor = [uicolor browncolor].cgcolor;

layer.bounds = cgrectmake(0, 0, 200, 200) ;

layer.anchorpoint = cgpointzero;

layer.position = cgpointmake(100, 100);

layer.cornerradius = 20;

layer.shadowcolor = [uicolor blackcolor].cgcolor;

layer.shadowoffset = cgsizemake(10, 20);

layer.shadowopacity = 0.6;

[layer setneedsdisplay];

[self.view.layer addsublayer:layer];

......

在自定義layer中的-(void)drawincontext:方法不會自己呼叫,只能自己通過setneeddisplay方法呼叫.

在view中畫東西drawrect:方法在view第一次顯示的時候會自動呼叫。

上面是第一種方法使得layer重繪。其實還有方法二,就是 設定layer的delegate為vc,在vc上實現

- (void)drawlayer:(calayer *)layer incontext:(cgcontextref)ctx,我們這個時候在customlayer不需要再去重寫 -(void) drawincontext:

- (void)drawlayer:(calayer *)layer incontext:(cgcontextref)ctx

待續

iOS重繪機制drawRect

ios的繪圖操作是在uiview類的drawrect方法中完成的,所以如果我們要想在乙個uiview中繪圖,需要寫乙個擴充套件uiview 的類,並重寫drawrect方法,在這裡進行繪圖操作,程式會自動呼叫此方法進行繪圖。下面先說明一下繪圖,比如,你想繪製乙個方塊,你需要寫乙個類來擴充套件uivi...

iOS重繪機制drawRect

ios的繪圖操作是在uiview類的drawrect方法中完成的,所以如果我們要想在乙個uiview中繪圖,需要寫乙個擴充套件uiview 的類,並重寫drawrect方法,在這裡進行繪圖操作,程式會自動呼叫此方法進行繪圖。下面先說明一下繪圖,比如,你想繪製乙個方塊,你需要寫乙個類來擴充套件uivi...

iOS重繪機制drawRect

如何使用iphone進行繪圖 重繪操作 iphone的繪圖操作是在uiview類的drawrect方法中完成的,所以如果我們要想在乙個uiview中繪圖,需要寫乙個擴充套件uiview 的類,並重寫drawrect方法,在這裡進行繪圖操作,程式會自動呼叫此方法進行繪圖。下面先說明一下繪圖,比如,你想...