首页 > 解决方案 > 如何防止 UIScrollView 切断按钮?

问题描述

我想知道防止滚动视图切断页面边框上的按钮/视图的选项。我的应用程序有一个充当文本编辑器的文本视图。它有一个用于键盘的输入附件视图,其中包含大约 20 个不同的工具栏格式按钮,供用户应用于文本。因为按钮太多,所以工具栏附件视图处于水平滚动的滚动视图中。

我的问题是,在某些屏幕上(取决于设备屏幕尺寸),按钮可能会在视图边缘被切断。当滑动到下一页时(它使用分页),按钮仍然在屏幕的另一侧被切断。我将附上两个屏幕截图,显示在页面滑动之前和之后切断下划线按钮。

注意最右边的“U”按钮:

在此处输入图像描述

滑动页面后,“U”位于最左侧:

在此处输入图像描述

我希望用户可以完全访问这些按钮。这可能意味着该按钮可以被切断,但在页面滑动时它将完全可见。或者这可能意味着如果按钮被切断,按钮将不会显示在屏幕上。

我试过的:

    override func didMoveToWindow() {
        var buttonSizeArray: [CGFloat] = []
        for button in op1ButtonList {
            buttonSizeArray.append(button.frame.width)
        }
        let buttonSpacing: CGFloat = 12
        let leadingSpacing: CGFloat = 10
        
        var sizeDict: [Int:CGFloat] = [:]

        for (index, buttonSize) in buttonSizeArray.enumerated() {
            if index == 0 {
                sizeDict[index] = leadingSpacing + buttonSize
            } else {
                sizeDict[index] = buttonSpacing + buttonSize + sizeDict[index - 1]!
            }
        }

        for index in 0..<buttonSizeArray.count {
                if sizeDict[index]! < UIScreen.main.bounds.size.width {
                    // keep track of the last button that fit on the screen
                    continue
                }
                break
            // code to group the buttons into views for the scroll view to use
        }
    }

在以这种方式使用滚动视图时,其他人是否遇到过这种情况并找到了一个好的解决方案?我找到的答案主要指向开发人员正确设置页面大小,以便视图包含预期的内容,但在这种情况下,我还没有找到始终如一地获得所需大小的方法。我也绝对愿意接受其他解决方案。

标签: iosswiftuiscrollview

解决方案


推荐阅读