gpt4 book ai didi

swift - 绘制后 uiimageview 中的 ContentMode 发生变化

转载 作者:行者123 更新时间:2023-11-28 08:12:11 31 4
gpt4 key购买 nike

我一直在关注 Ray Wenderlics 关于如何创建基本绘图应用程序的教程。

除了在 uiimageview 上绘制内容模式更改时,我让它工作得很好。

我在 Storyboard 中将它设置为 aspectFill 并应用了图像

我认为问题出在我的 touches ended 方法上

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if !swiped {
// draw a single point
drawLineFrom(fromPoint: lastPoint, toPoint: lastPoint)
}

// Merge tempImageView into mainImageView
UIGraphicsBeginImageContext(mainImageView.frame.size)
mainImageView.image?.draw(in: CGRect(x: 0, y: 0, width: mainImageView.frame.size.width, height: mainImageView.frame.size.height), blendMode: CGBlendMode.normal, alpha: 1.0)
tempImageView.image?.draw(in: CGRect(x: 0, y: 0, width: mainImageView.frame.size.width, height: mainImageView.frame.size.height), blendMode: CGBlendMode.normal, alpha: opacity)
mainImageView.image = UIGraphicsGetImageFromCurrentImageContext()

UIGraphicsEndImageContext()

tempImageView.image = nil


}

它将内容模式更改为 scaleToFill 或 Scale to fit?

有谁知道我如何更改它?

问候

托马斯

更新

感谢马特的指导

我添加了以下代码

  let imageSize = AVMakeRect(aspectRatio: (mainImageView.image?.size)!, insideRect: mainImageView.frame)

mainImageView.image?.draw(in: CGRect(x: 0, y: 0, width: imageSize.width , height: imageSize.height), blendMode: CGBlendMode.normal, alpha: 1.0)
tempImageView.image?.draw(in: CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height), blendMode: CGBlendMode.normal, alpha: opacity)
mainImageView.image = UIGraphicsGetImageFromCurrentImageContext()

我认为我在正确的轨道上,但图像现在正在调整大小以适应纵横比而不是纵横比填充。

最佳答案

ImageView 的内容模式没有改变。 (您可以轻松地对其进行测试,只需检查其 contentMode,这不会在您的代码中的任何地方发生。)

问题是你画的方式!您正在将图像 mainImageView.image 绘制到矩形 CGRect(x: 0, y: 0, width: mainImageView.frame.size.width, height: mainImageView.frame.size .高度)。这会拉伸(stretch)图像以完全适合该矩形 - 导致您提示的拉伸(stretch)行为。

换句话说,是在说“缩放此图像以填充此矩形”,而这正是正在发生的事情。

关于swift - 绘制后 uiimageview 中的 ContentMode 发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398015/

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