在ImageView中为PhotoEditing App添加基于Image的新帧

Khu*_*sai 11 frame ios swift3

我正在制作照片编辑应用程序,我需要在图像上添加帧基本上我已经使用了另一个UIImageView与我原来的UIImageView相同的框架,只需添加png图像.现在问题是我需要基于图像视图内框架的高度和宽度的框架. 在此输入图像描述

如上图所示我的框架出现在整个UIImageView中,但我在Imageview中的图像是横向,所以如果我在Imageview内的图像是风景,那么我需要风景框架,如果图像是肖像,那么我需要肖像框架.我如何实现这一目标?

我使用2图像视图具有相同的高度宽度一个是原始图像视图而另一个是帧图像视图现在我使用以下代码应用图像

来自StoryBoard的图片出口

@IBOutlet var imgFrame: UIImageView!
Run Code Online (Sandbox Code Playgroud)

将框架应用于ImageView

                imgFrame.isHidden = false
                imgFrame.image = #imageLiteral(resourceName: "Frame-Style-1.png")
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 4

我认为你需要两件事。

保持框架 UIImageView 的大小与源 UIImageView 相同。

要配置此功能,您必须将帧图像视图的顶部、底部、前导和尾随锚点与源图像视图的相应锚点对齐。

将源 UIImageView 的大小调整为图像的大小。

UIImageView尺寸调整为 的尺寸最简单的方法UIImage是使用宽高比约束。此外,我将两者的内容模式UIImageView配置为scale to fill

let image = UIImage(named: "portrait")!
let aspectRatio = image.size.height / image.size.width

let aspectRatioConstraint = NSLayoutConstraint(item: userImageView,attribute: .height,relatedBy: .equal,toItem: userImageView,attribute: .width,multiplier: aspectRatio,constant: 0)

userImageView.image = image
userImageView.addConstraint(aspectRatioConstraint)

frameImageView.image = UIImage(named: "landscape-frame")
Run Code Online (Sandbox Code Playgroud)

您还必须将源定位UIImageView在视图控制器内,但我将其留给您。这是我使用此代码实现的示例结果。

肖像结果图像 景观结果图像

这是GitHub 上示例项目的链接