使用 Swift 3 以编程方式将部分图像放置在 UIView 中的另一个图像之上

Programmatically place partial image over another in UIView using Swift 3

我上周刚开始 Swift 工作,如果以下方法是将部分图像放置在另一幅图像之上的正确方法,我需要一个建议。

我有一个 UIView,我在其中以编程方式创建 3 个图像。左箭头图像、中间移动图像和右箭头图像如下所示。我可以在移动图像上部分放置 50% 的箭头图像吗?

我试过:

func setupUI(){
    let mobileImage = UIImage(named: "mobile")
    let arrowImage = UIImage(named: "arrow")

    middleView = UIImageView(frame: CGRect(x: arrowImage!.size.width/2, y:0 , width:mobileImage!.size.width, height:mobileImage!.size.height))
    middleView.image = mobileImage
    middleView.layer.borderWidth = 1.0
    middleView.layer.cornerRadius = 5.0
    self.addSubview(middleView)

    let yForArrow =  mobileImage!.size.height - arrowImage!.size.height
    leftArrow = UIImageView(frame: CGRect(x: 0, y:yForArrow, width:arrowImage!.size.width, height:arrowImage!.size.height))
    leftArrow.image = arrowImage
    self.addSubview(leftArrow)

    let rightArrowX = mobileImage!.size.width
    rightView = UIImageView(frame: CGRect(x: rightArrowX, y:yForArrow, width:arrowImage!.size.width, height:arrowImage!.size.height))
    rightView.image = arrowImage
    self.addSubview(rightView)
}

*一开始它不工作,因为我忘记在 init 方法中添加 setupUI()。如下面的答案所示。

设置框架是正确的做法还是我应该使用约束?

对我来说,这看起来很糟糕,因为我正在对 CGRect 中的数字进行硬编码。

*此图像是在 MS 画图中创建的,以显示它在 iPhone 上的外观。

我发现了我在 init 方法中没有添加 setupUI() 的问题。

SetupUI 以编程方式在 UIView 上添加图像。因为它丢失了,所以 iPhone 模拟器中没有图像出现。

override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI() // Code to add images in UIView
    }

但我发现人们对这个问题投了反对票,这非常令人沮丧。