【问题标题】:Programmatically place partial image over another in UIView using Swift 3使用 Swift 3 以编程方式将部分图像放在 UIView 中的另一个上
【发布时间】:2017-10-02 10:56:01
【问题描述】:

我上周刚开始使用 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 Paint 中创建的,以显示它在 iPhone 上的外观。

【问题讨论】:

  • 什么不起作用?
  • 如果问题是图像被截断,那么您可能应该将图像的 clipToBounds 设置为 false
  • 我将在这里发布完整的代码。但是为什么问题被给予-4分。我的代码有一些问题,这就是它不起作用的原因。此图像是在 MS Paint 中创建的,以显示它在 iPhone 上的外观。
  • 我认为一些用户在投票,因为仍然不清楚问题是什么。您的框架似乎是正确的(至少对于 x,肯定是 y),但我不明白您不喜欢什么。图像是否被剪切?他们错位了吗?您能否显示最终结果以及有关该问题的详细信息?
  • 我错过了在 init 方法中添加 setupUI() 所以图像没有被渲染。另外,我想问一下设置框架是否是正确的做法,或者我应该使用约束。

标签: swift swift3 uiview ios8


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 2015-05-24
    • 2012-09-16
    • 1970-01-01
    • 2017-11-03
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多