我想使用scrollView在键盘出现时向上移动嵌套视图内容。 (也许你知道一个更好的解决方案?)
因此,我将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))
}
}
答案 0 :(得分:1)
这是您需要的: ScrollView需要左/右/上/下的约束。 这将确定滚动视图的可呈现部分的大小。这是键盘显示时要调整大小的部分。
然后,您需要设置ScrollView内容的大小。这是可以滚动的内容。您需要手动设置imageView的大小,或者在imageView和 滚动视图之外的视图之间设置相等。 (例如imageView.width == view.width)。
希望这指向正确的方向。您可能需要考虑使用Interface Builder进行设置,以便您可以查看所有约束,并在未正确设置时收到警告。
答案 1 :(得分:0)
感谢您的回答PEEJWEEJ,但我找到了另一个替代我的问题。我使用NotificationCenter来通知键盘打开,我创建了一个view.animate()来滚动我的视图。通过这种方式,我避免使用scrollView或tableView。