如何在UIScrollView上进行UIButton修复?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在UIScrollView上进行UIButton修复?相关的知识,希望对你有一定的参考价值。
我在UIScrollView上有一个UIButton,当我缩放我的滚动视图时,按钮位置没有修复...有没有办法让它在一个位置修复?
将按钮放置/设置在滚动视图上(不在滚动视图内),如此快照中所示。并且还针对滚动视图的超级视图设置按钮约束(位置)。
这是参考。每个视图在彼此之间的位置层次结构的快照。
在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
}
}
如果您希望在修改滚动视图时按钮保持固定的大小和位置,最好的方法是不要将它放在滚动视图中。将按钮添加到scrollview的父视图,然后它不会受到scrollview的任何更改的影响,并且可以覆盖在它上面。
您应该将按钮放在滚动视图之外并将其锚定到页面底部。这样滚动视图中的内容将会更改,但您的按钮将在视图中保持静态固定。
以上是关于如何在UIScrollView上进行UIButton修复?的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 不在 UIScrollView 内滚动
有没有办法在 UIScrollView 中模拟 scrollViewDidScrollToBottom?