Swift以编程方式将UIImageView放在另一个上面并调整大小

时间:2016-12-11 21:48:39

标签: ios swift uiimageview

在我的故事板上,我有2个图像视图。 一个保存主图像,第二个是覆盖图,用于指定主图像的裁剪区域。

在我的viewDidLoad中,我已经做到了。

let screen_width = UIScreen.mainScreen().bounds.width
let screen_height = UIScreen.mainScreen().bounds.height
self.overlayImage.frame = CGRect(x: self.imageView.frame.origin.x, y: self.imageView.frame.origin.y, width: screen_width, height: (screen_height * 0.1919))

目标是让overlayImage的左上角与imageView的左上角正确对齐。覆盖层的高度也应约为屏幕尺寸的1/5。但是,当我运行代码时,overlayImage的大小与它最初在故事板上的位置完全相同。

如何在将图像设置为imageView之后以编程方式将其排列在imageView之上,还可以在viewDidload中动态调整overlayImage的大小? 我只是在storyboard编辑器中手动完成,但每个人都有不同的屏幕尺寸,所以我认为最好使用mainscreen()。bounds.height变量来确定在运行时动态使用的高度。

3 个答案:

答案 0 :(得分:3)

您所要做的就是在viewDidAppear代替viewDidLoad编写上述代码,如下所示: -

override func viewDidAppear(animated: Bool) {
    let screen_width = UIScreen.mainScreen().bounds.size.width
    let screen_height = UIScreen.mainScreen().bounds.size.height
    self.overlayImage.frame = CGRect(x: 0, y: 0, width: screen_width, height:screen_height/5)
}

你的框架会根据需要自行设定。

答案 1 :(得分:0)

由于您正在使用Storyboard,我宁愿使用Autolayout和Constraints为我解决这个问题...例如,您为第一个图像视图设置了约束,然后根据和设置叠加的约束与前一个有关。例如:

  • 降低UIImageView:设置前导,尾随,顶部和底部约束
  • 叠加:将中心X和Y约束设置为等于下图像
  • 叠加:设置高度和宽度与下图像成比例

因此,当屏幕尺寸发生变化时,两张图像将始终均匀调整大小......

答案 2 :(得分:0)

界面构建器:

  1. 将覆盖顶部,前导,宽度设置为图像视图。
  2. 为叠加层提供恒定的高度约束;约束cosntant值是任意的,因为您将在运行时替换它
  3. ctrl +将IBOutlet从此高度约束拖动到您的viewcontroller
  4. viewWillLayoutSubViews中的
  5. 将高度约束的.constant设置为UIScreen.main.bounds.size.height / 5