如何在UIScrollView上进行UIButton修复?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在UIScrollView上进行UIButton修复?相关的知识,希望对你有一定的参考价值。

我在UIScrollView上有一个UIButton,当我缩放我的滚动视图时,按钮位置没有修复...有没有办法让它在一个位置修复?

答案

将按钮放置/设置在滚动视图上(不在滚动视图内),如此快照中所示。并且还针对滚动视图的超级视图设置按钮约束(位置)。

enter image description here

这是参考。每个视图在彼此之间的位置层次结构的快照。

enter image description here

另一答案

ios 11中,UIScrollView有一个名为frameLayoutGuide的实例属性。 frameLayoutGuide有以下声明:

var frameLayoutGuide: UILayoutGuide { get }

布局指南基于滚动视图的未转换框架矩形。

如果要创建显式涉及滚动视图本身的框架矩形的自动布局约束(而不是其内容矩形),请使用此布局指南。


下面的Swift 4 UIViewController实现显示了如何使用frameLayoutGuideUIButton置于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在垂直和水平ios中滚动

有没有办法在 UIScrollView 中模拟 scrollViewDidScrollToBottom?

应用商店更新后 UIScrollView 不起作用

有人可以解释多点触控缩放是不是应该适用于 UITextView 或 UIScrollView

如何在 QGraphicsScene 上进行选择?