在视网膜 iPad 上应用图层蒙版会隐藏所有

Posted

技术标签:

【中文标题】在视网膜 iPad 上应用图层蒙版会隐藏所有【英文标题】:Applying a layer mask on the retina iPad hides all 【发布时间】:2012-11-09 13:08:43 【问题描述】:

我有一个 UIView,我对其应用了图层蒙版。它适用于除视网膜 iPad 之外的所有设备。在视网膜 iPad 上,被遮盖的视图不显示。如果我取下遮罩,视图会显示在视网膜 iPad 上。

面具很简单。它显示了整个视图,除了从底部边缘取出的一个小三角形。

contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] applicationFrame].size.width, [[UIScreen mainScreen] applicationFrame].size.height - 50.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGMutablePathRef path = CGPathCreateMutable();
float triangleDepth = 10;
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL, contentView.frame.size.width, 0);
CGPathAddLineToPoint(path, NULL, contentView.frame.size.width, contentView.frame.size.height);
CGPathAddLineToPoint(path, NULL, (contentView.frame.size.width / 2.0) + triangleDepth, contentView.frame.size.height);
CGPathAddLineToPoint(path, NULL, (contentView.frame.size.width / 2.0), contentView.frame.size.height - triangleDepth);
CGPathAddLineToPoint(path, NULL, (contentView.frame.size.width / 2.0) - triangleDepth, contentView.frame.size.height);
CGPathAddLineToPoint(path, NULL, 0, contentView.frame.size.height);
CGPathCloseSubpath(path);
[maskLayer setPath:path];
CGPathRelease(path);
contentView.layer.mask = maskLayer;
contentView.clipsToBounds = NO;
[self.view addSubview:contentView];

这段代码适用于所有设备,那么视网膜 iPad 有什么不同会阻止它工作?

【问题讨论】:

【参考方案1】:

这只是 ios 模拟器的问题。我终于在视网膜 iPad 上尝试了代码,一切正常。

【讨论】:

以上是关于在视网膜 iPad 上应用图层蒙版会隐藏所有的主要内容,如果未能解决你的问题,请参考以下文章

iOS 图层蒙版在 UIStackView 上不起作用

ps的钢笔工具知识点

如何获得圆形图层蒙版?

28.图层蒙版及图层混合模式

为啥在子视图中添加图层蒙版时需要调用 layoutIfNeeded()?

Swift mapview图层蒙版裁剪/移动视图。我究竟做错了什么?