我一直遵循雷温德莱茨的教程,如何创建一个基本的绘图应用程序。
除了当我在uiimageview上绘制内容模式更改之外,我已经让它完美地工作了。
我已经在故事板中将它设置为aspectFill,并应用了一个图像
我想问题就在我的解决方法上
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或缩放模式?
有人知道我是怎么改变这个的吗?
问候
托马斯
更新
谢谢马特的指导
我添加了以下代码
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()我认为我是在正确的轨道上,但图像现在调整为方面适合,而不是方面填充。
发布于 2017-04-13 17:14:30
图像视图的内容模式没有改变。(只需检查它的contentMode就可以很容易地进行测试,这在代码中任何地方都不会发生。)
问题是你画的方式!您正在将一个图像( mainImageView.image )绘制成一个新的CGRect(x: 0, y: 0, width: mainImageView.frame.size.width, height: mainImageView.frame.size.height)。这张照片正好符合你所抱怨的拉伸行为。
换句话说,你说的是“缩放这个图像来填充这个图”,这就是正在发生的事情。
https://stackoverflow.com/questions/43398015
复制相似问题