gpt4 book ai didi

ios - 将 UIBezierPath 添加到 UIView

转载 作者:行者123 更新时间:2023-12-01 16:29:27 25 4
gpt4 key购买 nike

我有一个带有布局约束(宽度:400,高度:180)的 UIView,我想在 View 中添加一个贝塞尔曲线。

我的贝塞尔曲线是这样的:

UIBezierPath* bezierPath = [UIBezierPath bezierPath];

// origin, height | left border
[bezierPath moveToPoint: CGPointMake(0, 20)];

// origin, height | left border
[bezierPath addLineToPoint: CGPointMake(0, _donationView.frame.size.height)];

// height, width | bottom border
[bezierPath addLineToPoint: CGPointMake(_donationView.frame.size.width , _donationView.frame.size.height)];

[bezierPath addLineToPoint: CGPointMake(_donationView.frame.size.width, 20)];

[bezierPath addLineToPoint: CGPointMake(_donationView.frame.size.width - 20, 20)];

[bezierPath addLineToPoint: CGPointMake(_donationView.frame.size.width - 30, 15)];

[bezierPath addLineToPoint: CGPointMake(_donationView.frame.size.width - 40, 20)];

[bezierPath addLineToPoint: CGPointMake(0, 20)];

[bezierPath closePath];
[UIColor.grayColor setFill];
[bezierPath fill];
[UIColor.blackColor setStroke];
bezierPath.lineWidth = 1;
[bezierPath stroke];

创建贝塞尔曲线后,我传递给:
CAShapeLayer *shapeView = [[CAShapeLayer alloc] initWithLayer:_donationView.layer];
[shapeView setPath:bezierPath.CGPath];

_donationView.layer.mask = shapeView;

但是贝塞尔曲线转到这个 CGRect(0, 0, 240, 128);

我怎样才能有一个(0,0,400,180)的CGRect?

多谢你们

最佳答案

问题是你在 donationView 之前做得太早了。已达到最终规模。因此,当您阅读其 frame.size ,你得到错误的结果。您需要将掩码的添加推迟到布局完成之后。

如果 donationView,您还可能遇到更多问题。以后再调整大小。 mask 层(或任何层)不参与自动布局是非常烦人的。所以如果 donationView已调整大小,您将必须删除此蒙版并创建一个具有正确大小的新蒙版并再次添加。

关于ios - 将 UIBezierPath 添加到 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32721854/

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