该文章转移自我在CSDN上的博客,为了方便管理所以我把他们转载过来,以前技术比较有限所以博客可能写的比较简单吧.
关于遮罩的实现和理解
#pragma mark -
#pragma mark 点击imageButton
- (IBAction)didClickImageButton:(id)sender{
/**
图片恢复原状
遮罩view消失
*/
// 对coverView的透明度进行判断
if (self.coverView.alpha ==0) {
// 进行放大
[self didClickBigImageButton:nil];
} else {
[UIView animateWithDuration:0.5 animations:^{
self.coverView.alpha =0;
_imageButton.transform =CGAffineTransformIdentity;
}];
}
}
这段代码的目的是通过点击这个按钮图片来放大,同时声称一个半透明遮罩,并将这个图片置顶到遮罩层上;再次点击后,将透明度变为0,并将图片缩小。
#pragma mark -
#pragma mark 加载 coverView
- (UIView*)coverView {
if (nil ==_coverView) {
// 实例化一个view
UIView*coverView = [[UIViewalloc]initWithFrame:self.view.bounds];
self.coverView =coverView;
// 设置透明度
coverView.alpha = 0;
// 设置颜色
coverView.backgroundColor = [UIColorblackColor];
// 添加到控制器的view上
[self.viewaddSubview:coverView];
}
return _coverView;
}
这是实现遮罩的代码。
那么问题来了:为什么遮罩层透明度为0,但它实际上是存在的,就好比看的见摸不着一样的感觉,但是为什么能穿透遮罩层来点击遮罩层下面的按钮呢?
经过查找资料,以及问安卓的同学,发现是这样子的,当透明度为0-0.01时,可以把这个遮罩层当不存在一样,完全可以击穿遮罩层。而安卓因为焦点的问题点击不到遮罩层下面也是和iOS有区别。