【发布时间】:2017-08-13 05:40:59
【问题描述】:
我想在键盘出现时使用 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))
}
}
【问题讨论】:
-
你必须设置scrollview的contentSize和UIImageView一样,scrollview的frame size和UIScreen一样。
-
你介意用 UITableview 代替 UIScrollview 吗?放置 UITableView 后,当键盘自动出现时,视图会向上滚动。在这种情况下,您不必处理上述所有情况。
-
UITableView 对于这个简单的用法似乎很难,不是吗?波兰人,我试过了,但还是不行:(
-
我认为 UITableView 不做键盘处理 - UITableViewController 做 - 所以你需要从中派生你的 VC。
-
当然可以,但是有没有其他办法可以在出现键盘时让内容上移?
标签: ios swift xcode uiscrollview swift3