gpt4 book ai didi

ios - 如何适配 CAShapeLayer

转载 作者:行者123 更新时间:2023-11-29 01:14:53 24 4
gpt4 key购买 nike

我正在开发 iPhone 应用程序,我使用下一个代码来圆我层的两个角:

CAShapeLayer *backgroundMaskLayer = [CAShapeLayer layer];
UIBezierPath *backgroungMaskPath = [UIBezierPath
bezierPathWithRoundedRect:self.layer.bounds
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii:CGSizeMake(10.0, 10.0)];

self.clipsToBounds = NO;
backgroundMaskLayer.frame = self.layer.bounds;
backgroundMaskLayer.path = backgroungMaskPath.CGPath;
backgroundMaskLayer.lineWidth = 2.0;
backgroundMaskLayer.strokeColor = [UIColor whiteColor].CGColor;
backgroundMaskLayer.fillColor = [UIColor whiteColor].CGColor;

[self.inputBackView.layer addSublayer:backgroundMaskLayer];

但圆圈层不会在不同设备上与其他层缩放。

我试过这个:

backgroundMaskLayer.contentsScale = [UIScreen mainScreen].scale;
backgroundMaskLayer.rasterizationScale = [UIScreen mainScreen].scale;
backgroundMaskLayer.shouldRasterize = YES;

还有这个:

- (void)layoutSubviews {
mylayer.frame = self.bounds;
}

此外,我尝试了不同的约束组合,但我仍然在 iPhone 6 上得到这个(在 iPhone 5 上,它已经足够了):

layer does not fit

xib 文件中的蓝色是我的层,我在其上施加了我的 CAShapeLayer * backgroundMaskLayer(白色)。

我该如何解决?

最佳答案

将您的layoutSubviews方法更新为:

- (void)layoutSubviews
{
[super layoutSubviews];
UIBezierPath *backgroungMaskPath = [UIBezierPath
bezierPathWithRoundedRect:self.bounds
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii:CGSizeMake(10.0, 10.0)];
backgroundMaskLayer.path = backgroungMaskPath.CGPath;

}

关于ios - 如何适配 CAShapeLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35310539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com