【发布时间】:2019-01-18 10:28:51
【问题描述】:
我在 ScrollView 中使用了 @2x 7360x828px 和 @3x 11040x1242px 的背景图像,在所有 iPhone 上看起来都不错(全屏),但在 iPad 上背景图像只占屏幕高度的一半。
我尝试了很多变体,有自动布局和没有自动布局,有不同的 contentMode,但我无法实现我的目标,要么背景图像被拉伸,要么具有正确纵横比的图像小于 ScrollView。
我最后的代码:
var imageView = UIImageView(image: UIImage(named: "map.png"))
lazy var scrollView = UIScrollView(frame: view.bounds)
override func viewDidLoad() {
super.viewDidLoad()
makeScrollView()
}
func makeScrollView() {
// For iPad
scrollView.backgroundColor = UIColor.black
scrollView.contentSize = imageView.bounds.size
scrollView.clipsToBounds = true
scrollView.contentMode = .scaleAspectFit
print("Scroll size: == ")
print(scrollView.contentSize)
scrollView.autoresizingMask = UIViewAutoresizing.flexibleWidth
scrollView.autoresizingMask = UIViewAutoresizing.flexibleHeight
scrollView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scrollView)
scrollView.contentInsetAdjustmentBehavior = .never
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
scrollView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
imageView.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(imageView)
imageView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
imageView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
imageView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 7360 / 2).isActive = true
imageView.contentMode = .scaleAspectFit
}
如何为 iPad 制作全屏背景图片并保持宽高比?
该应用程序仅在横向模式下使用。
截图:
1) contentMode = .scaleAspectFit
2) contentMode = .scaleAspectFill
【问题讨论】:
标签: ios swift uiscrollview