1

レイヤーマスクを適用するUIViewがあります。RetinaiPadを除くすべてのデバイスでうまく機能します。Retina iPadでは、マスクされているビューは表示されません。マスクを外すと、RetinaiPadにビューが表示されます。

マスクはとてもシンプルです。下端から取り出された小さな三角形を除いて、ビュー全体が表示されます。

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];

このコードはすべてのデバイスで実行されますが、これが機能しない原因となるRetina iPadの違いは何ですか?

4

1 に答える 1

1

これはiOSシミュレーターの問題でした。私はついに網膜iPadでコードを試すことができ、すべてがうまく機能しました。

于 2012-11-26T12:23:19.560 に答える