在Swift 3中创建一个相同大小的超级视图的视图

时间:2017-02-15 07:38:39

标签: ios iphone swift swift3

我正在尝试使用我设置背景颜色和不透明度的视图在图像顶部创建一个遮罩,它似乎在iPhone 7中完美运行。当我在iPhone中运行应用程序时出现问题7加模拟器,由于某种原因掩模保持iPhone 7尺寸的大小。

我创建了一个自定义的UIImageView类:

class LoginBackgroundImageView: UIImageView {

    override func awakeFromNib() {
         super.awakeFromNib()

         // Set a mask on image background
         let bgColorView = UIView()
         bgColorView.backgroundColor = UIColor(white: 0, alpha: 0.4)
         bgColorView.frame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height)

         addSubview(bgColorView)
     }
}

目前的结果如下: enter image description here

3 个答案:

答案 0 :(得分:2)

代替框架尝试在将其添加为subView后向bgColorView添加约束。

class LoginBackgroundImageView: UIImageView {

    override func awakeFromNib() {
        super.awakeFromNib()
        self.clipsToBounds = true // set clipsToBounds true

        let bgColorView = UIView()
        bgColorView.backgroundColor = UIColor(white: 0, alpha: 0.4)
        addSubview(bgColorView)

        bgColorView.translatesAutoresizingMaskIntoConstraints = false

        bgColorView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
        bgColorView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
        bgColorView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
        bgColorView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
    }
}

希望得到这个帮助。

答案 1 :(得分:0)

你有没有尝试过:

bgColorView.frame = frame 

或者:

bgColorView.frame = UIScreen.main.bounds

答案 2 :(得分:0)

您的LoginBackgroundImageView可能Content ModeAspectFitScaleAspectFit不同吗?在这种情况下,当bgColorView具有适当的帧时,图像实际上可能会离开其帧。