我在UIScrollView上有一个UIButton,当我缩放我的滚动视图时,按钮位置没有修复...有没有办法让它在一个位置修复?
答案 0 :(得分:1)
对于iOS 11,UIScrollView
有一个名为frameLayoutGuide
的实例属性。 frameLayoutGuide
有以下声明:
var frameLayoutGuide: UILayoutGuide { get }
布局指南基于滚动视图的未转换框架矩形。
如果要创建显式涉及滚动视图本身的框架矩形的自动布局约束,请使用此布局指南,而不是其内容矩形。
以下Swift 4 UIViewController
实施说明如何使用frameLayoutGuide
将UIButton
置于UIScrollView
内。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
let button = UIButton(type: .system)
let imageView = UIImageView(image: UIImage(named: "LargeImage"))
override func viewDidLoad() {
super.viewDidLoad()
// Add imageView as a scrollable subview of scrollView and set its constraints
scrollView.addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor).isActive = true
imageView.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor).isActive = true
imageView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor).isActive = true
imageView.bottomAnchor.constraint(equalTo: scrollView.contentLayoutGuide.bottomAnchor).isActive = true
// Add button as a subview of scrollView and set its constraints (centered)
button.setTitle("Button", for: .normal)
scrollView.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
button.centerXAnchor.constraint(equalTo: scrollView.frameLayoutGuide.centerXAnchor).isActive = true
button.centerYAnchor.constraint(equalTo: scrollView.frameLayoutGuide.centerYAnchor).isActive = true
}
}
答案 1 :(得分:1)
答案 2 :(得分:0)
如果您希望在修改滚动视图时按钮保持固定的大小和位置,最好的方法是不要将它放在滚动视图中。将按钮添加到滚动视图的父视图,然后它不会受到滚动视图的任何更改的影响,并且可以覆盖在它上面。
答案 3 :(得分:0)
您应该将按钮放在滚动视图之外并将其锚定在页面底部。这样滚动视图中的内容将会更改,但您的按钮将在视图中保持静态固定。