CALayer
每個(gè)UIView都有一個(gè)根CALayer,UIView本身沒(méi)有顯示的功能,是靠CALayer進(jìn)行繪制的效果,然而CALayer不能響應(yīng)事件。
好多動(dòng)畫效果都是通過(guò)CALayer來(lái)實(shí)現(xiàn)的,非根CALayer修改其屬性都包含著隱式動(dòng)畫,例如修改背景顏色。根CALAyer把這個(gè)效果給去掉了。

CALayer * layer = [CALayer layer];
layer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:layer];
layer.bounds = CGRectMake(0, 0, 100, 100); //控制大小
layer.position = CGPointMake(100, 100); //控制x,y,設(shè)置在父視圖中的位置,以父視圖左上角為原點(diǎn)(0,0)
layer.anchorPoint = CGPointMake(0, 0); //定點(diǎn),錨點(diǎn),決定CALayer身上的哪個(gè)點(diǎn)會(huì)在position屬性所指的位置,以自己的左上角為原點(diǎn)(0,0),取值在[0,1]

下面這個(gè)動(dòng)畫效果即可通過(guò)CALayer來(lái)實(shí)現(xiàn)。

_moreView.layer.anchorPoint = CGPointMake(0.9, 0);
_moreView.layer.bounds = CGRectMake(0, 0, 155, 212);
_moreView.layer.position = CGPointMake(mScreenWidth - 30, 44 + 10);
if (self.moreView.hidden) { //顯示
self.moreView.hidden = NO;
self.moreView.transform = CGAffineTransformMakeScale(0.0001, 0.001);
[UIView animateWithDuration:0.3 animations:^{
self.moreView.transform = CGAffineTransformMakeScale(1.0, 1.0);
}];
} else { //隱藏
[UIView animateWithDuration:0.3 animations:^{
self.moreView.transform = CGAffineTransformMakeScale(0.0001, 0.001);
} completion:^(BOOL finished) {
if (finished) {
self.moreView.hidden = YES;
}
}];
}