我想使用 scrollView 在键盘出现时向上移动嵌套 View 内容。 (也许您知道更好的解决方案?)
因此,我将一个 UIScrollView 放入我的 UIViewController 并将一个 UIImageView 放入我的 UIScrollView。问题是尽管有限制,但我的 UIScrollView 和我的图像大小一样大。
我设置了以下约束:
scrollView.addConstraintsWithFormat(format: "H:|[v0]|", views: backgroundImage)
scrollView.addConstraintsWithFormat(format: "V:|[v0]|", views: backgroundImage)
self.view.addConstraintsWithFormat(format: "H:|[v0]|", views: scrollView)
self.view.addConstraintsWithFormat(format: "V:|[v0]|", views: scrollView)
有人有解决方案吗?
这是我完整的 UIViewController 代码:
import UIKit
class HomeViewController: UIViewController {
let scrollView: UIScrollView = {
let screenSize = UIScreen.main.bounds
let scrollView = UIScrollView()
scrollView.backgroundColor = .red
scrollView.contentSize = CGSize(width: screenSize.width, height: screenSize.height)
return scrollView
}()
let backgroundImage: UIImageView = {
let imageView = UIImageView()
imageView.image = UIImage(named: "BACKGROUND_ASIA")
imageView.alpha = 0.5
return imageView
}()
override func viewDidLoad() {
setupHomeView()
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func setupHomeView() {
self.view.backgroundColor = UIColor.black
self.view.addSubview(scrollView)
self.view.addConstraintsWithFormat(format: "H:|[v0]|", views: scrollView)
self.view.addConstraintsWithFormat(format: "V:|[v0]|", views: scrollView)
scrollView.addSubview(backgroundImage)
scrollView.addConstraintsWithFormat(format: "H:|[v0]|", views: backgroundImage)
scrollView.addConstraintsWithFormat(format: "V:|[v0]|", views: backgroundImage)
}
}
extension UIView {
func addConstraintsWithFormat(format: String, views: UIView...) {
var viewsDictionary = [String: UIView]()
for (index, view) in views.enumerated() {
let key = "v\(index)"
viewsDictionary[key] = view
view.translatesAutoresizingMaskIntoConstraints = false
}
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: format, options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary))
}
}
最佳答案
- 您应该首先在 viewDidLoad 中调用 super。
- 您应该仔细阅读 scrollViews 的工作原理。
这是你需要的: ScrollView 需要对左/右/上/下进行约束。 这将确定 ScrollView 的可呈现部分的大小。这是您在键盘显示时调整大小的部分。
然后,您需要设置ScrollView 内容的大小。这是可以滚动的内容。您将需要手动设置 imageView 的大小,或者设置 imageView 与存在于 ScrollView 之外的 View 之间的相等性。 (例如 imageView.width == view.width)。
希望这指向正确的方向。您可能想考虑使用 Interface Builder 来设置它,这样您就可以看到所有约束并在设置不正确时收到警告。
关于ios - UIScrollView 不符合约束条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42929108/