中心ImageView垂直偏移

时间:2018-02-01 22:35:29

标签: swift xcode autolayout interface-builder

我想水平居中一个图像视图,然后垂直居中。但是,在垂直居中时,我需要将图像视图稍微偏离中心,有利于视图的上半部分。我的设计师给了我一个214点的顶部间距,这在iPhone 6,7,8上非常完美。但是在iPad上它无法正确缩放。在iPhone 4S频谱的另一端,图像视图有利于视图的下半部分。

iPhone 8 (下图是iPhone 8界面构建器的屏幕截图。) enter image description here

iPad (下图是为iPad Pro 9.7设置的界面构建器的屏幕截图。) enter image description here

iPhone 4S (下图是为iPhone 4S设置的界面构建器的屏幕截图。) enter image description here

如何根据所有屏幕尺寸进行缩放?

1 个答案:

答案 0 :(得分:5)

您可以通过应用故事板(centerXAnchor, centerYAnchor-offset)中的约束来解决它:

enter image description here

enter image description here

并且最终有尺寸等级变化:

enter image description here

我告诉你如何通过代码来解决它:

import UIKit

class ViewController: UIViewController {
    let IMAGE_SIZE:CGFloat = 200 // whatever
    let OFFSET:CGFloat = -60 // whatever

    override func viewDidLoad() {
        super.viewDidLoad()

        let niceIcon = UIImageView(image: UIImage(named: "icon"))
        self.view.addSubview(niceIcon)

        niceIcon.translatesAutoresizingMaskIntoConstraints = false
        niceIcon.widthAnchor.constraint(equalToConstant: IMAGE_SIZE).isActive = true
        niceIcon.heightAnchor.constraint(equalToConstant: IMAGE_SIZE).isActive = true
        niceIcon.centerXAnchor.constraint(lessThanOrEqualTo: self.view.centerXAnchor).isActive = true
        niceIcon.centerYAnchor.constraint(lessThanOrEqualTo: self.view.centerYAnchor, constant: OFFSET).isActive = true
    }
}

重点是:不要使用上/左/右/下锚,只需使用centerX和centerY(带负偏移)