[英]iOS 8: setting view.layer.mask covers view, mask is top of UI hierarchy
我的問題是,如何確保視圖的layer.mask位於UI層次結構的背面,或者由於不一定要實現我想要的效果,因此如何在視圖周圍設置邊框在iOS 7和iOS 8上哪個具有圓角和底角? 以下是我當前解決方案遇到的問題。
在iOS 7中,當我像這樣設置視圖圖層的蒙版時:
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.view.bounds
byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)
cornerRadii:CGSizeMake(WDFeedItemViewCornerRadius,
WDFeedItemViewCornerRadius)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;
self.view.layer.mask = maskLayer;
結果實際上是圍繞視圖的邊框(頂部是“ Bruce Morgan”,[這是一個假名,只是為了避免讓您感到害怕],在其周圍具有邊框,該邊框在底部為正方形,在頂部為圓形):
但是,在iOS 8上運行相同的代碼會將遮罩置於視圖的前部,如下所示:
這是通過查看UI層次結構確認的(不幸的是,無法查看iOS 7的層次結構):
我試圖在當前視圖后面創建一個視圖,其唯一目的是將蒙版應用於該蒙版,並將layer.zPosition設置為0並將mask.zPosition設置為0,但是蒙版STILL出現在所有內容的頂部。 這是怎么回事? 我如何解決它?
是的...原來是一個insertSubview:belowSubview:
視圖正在調用insertSubview:belowSubview:
由於某種原因(也許'belowSubview'參數沒有完成加載?),它只是在所有其他視圖之上添加了新視圖(在iOS 8中,但不適用於iOS 7)。 將insertSubview:belowSubview:
更改為insertSubview:atIndex:
的索引為0,為我解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.