1

少し前に、マスクされたビューの背後でアニメーションを実行するアプリに気付きました。

UIBezierPath *myBezierPath = myVectorDrawing.bezier;


CAShapeLayer *myShapeLayer = [CAShapeLayer layer];
myShapeLayer.path = myBezierPath.CGPath;

debugLog(@"wize: height%f width%f",myShapeLayer.frame.size.height, myShapeLayer.frame.size.width);

CAShapeLayer *maskWithHole = [CAShapeLayer layer];

maskWithHole.frame = self.mask.layer.bounds;


UIBezierPath *maskPath = [UIBezierPath bezierPath];
[maskPath moveToPoint:CGPointMake(CGRectGetMinX(maskWithHole.frame), CGRectGetMinY(maskWithHole.frame))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(maskWithHole.frame), CGRectGetMaxY(maskWithHole.frame))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(maskWithHole.frame), CGRectGetMaxY(maskWithHole.frame))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(maskWithHole.frame), CGRectGetMinY(maskWithHole.frame))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(maskWithHole.frame), CGRectGetMinY(maskWithHole.frame))];

[maskPath appendPath:myBezierPath];

[maskWithHole setPath:[maskPath CGPath]];
[maskWithHole setFillRule:kCAFillRuleEvenOdd];
[maskWithHole setFillColor:[[UIColor blackColor] CGColor]];

self.mask.layer.mask = maskWithHole;

self.mask.layer.masksToBounds = NO;

すべてのデバイス/iOS バージョンで、新しい iPad Air に期待される問題はありませんでした。マスクされた領域に大きなちらつきがあります。Apple は 64 ビット アーキテクチャのために何かを変更しましたか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

これは iOS 7.0 のバグであり、7.1 ベータ版で修正されています。

于 2014-01-29T14:42:04.510 に答える