該文章轉移自我在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有區別。