gpt4 book ai didi

swift - 具有多个线宽和背景图像的 uibezierpath (swift)

转载 作者:搜寻专家 更新时间:2023-11-01 07:22:41 25 4
gpt4 key购买 nike

我正在尝试快速绘制多种形状(矩形、三角形、圆形...),为此,我使用了 uibezierpath,但无法准确绘制出我想要的形状。例如,我需要绘制一个矩形,但该矩形的边框需要具有不同的线宽。为此,我创建了不同的路径,然后使用“附加路径”将它们合并到一个路径中。这样就可以了,但是我还需要在这个矩形中有一个背景图像。为此,我创建了一个图层并将其设置为图像。问题是,当我使用“appendpath”时没有显示背景图像,当然是因为它没有将我的绘图识别为矩形。

我希望它足够清楚,但是有没有办法用背景图像绘制一个形状,并具有不同的边框宽度?

感谢您的帮助!!

最佳答案

我建议您尝试两种解决方案:

1) 掩蔽

创建一个普通的 CALayer 并将图像设置为它的 contents。然后用你喜欢的路径创建一个 CAShapeLayer 并将其用作第一层的 mask

例如:

let imageLayer = CALayer()
imageLayer.contents = UIImage(named: "yourImage")?.CGImage // Your image here
imageLayer.frame = ... // Define a frame

let maskPath = UIBezierPath(...) // Create your path here
let maskLayer = CAShapeLayer()
maskLayer.path = maskPath.CGPath

imageLayer.mask = maskLayer

不要忘记设置正确的框架和路径,你应该能够达到你想要的效果。

2)填充颜色

用你喜欢的路径创建一个CAShapeLayer,然后使用你的图像作为它的fillColor

例如:

let path = UIBezierPath(...) // Create your path here
let layer = CAShapeLayer()
layer.path = path.CGPath

let image = UIImage(named: "yourImage") // Your image here
layer.fillColor = UIColor(patternImage: image!).CGColor

一开始您可能会发现这种方法更容易,但控制图像填充形状的方式一点也不简单。

希望对您有所帮助。
如果您想了解更多详细信息,请提供您要实现的目标的图像或草图和/或您目前编写的代码。谢谢!

关于swift - 具有多个线宽和背景图像的 uibezierpath (swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917902/

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