首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIButton跨越UIPageViewController的所有页面

UIButton跨越UIPageViewController的所有页面
EN

Stack Overflow用户
提问于 2014-11-23 03:53:07
回答 4查看 3.3K关注 0票数 6

我正在开发一个iPhone应用程序,并创建了一个UIPageViewController (让我们称它为容器),它包含许多UIViewController页面(让我们称它们为子页)。子页转换样式为滚动。

现在,我喜欢做的是在容器的右上角创建一个按钮,而不是在子页中创建一个按钮。这样做的想法是,当子页面从一个页面滚动到另一个页面时,该按钮将保留在屏幕上。如果我在一个子页中创建该按钮,那么每个子页面都会有自己的按钮,并且该按钮将与子页一起滚动。我希望在不移动容器的情况下保留按钮,而子页滚动。

我尝试使用情节提要将按钮添加到容器中,但现在允许使用它。我不能把它放在那里,我怀疑原因是因为容器UIPageViewController类型的。

我怎么才能用故事板做到这一点呢?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-23 04:09:01

  1. 在故事板中,创建一个标准的Viewcontroller场景。
  2. 在这个场景中添加固定按钮和容器视图。
  3. 添加容器视图将自动添加嵌入式视图控制器。选择这个并删除它。
  4. 将页面视图控制器拖动到情节提要中。
  5. 选择容器视图,并从"viewDidLoad“项中的”触发的segues“列表中拖动到页面视图控制器。选择"Embed“作为segue类型。
票数 15
EN

Stack Overflow用户

发布于 2014-11-23 03:59:50

在代码中,将按钮添加到uipageviewcontroller控制器中。

票数 0
EN

Stack Overflow用户

发布于 2019-02-14 00:48:04

下面是一个使用故事板的解决方案。你必须做一些代码,但它是最小的

  1. 在属性检查器中向页面视图控制器视图层次结构中添加视图
  2. 创建一个UIView子类,如果用户没有与子视图交互(否则用户将无法在页面之间滑动),该子类允许触摸通过视图。感谢@john的answer to this question

代码语言:javascript
运行
复制
class TouchThroughView: UIView {
        override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
            for subview in subviews {
                if !subview.isHidden && subview.isUserInteractionEnabled && subview.point(inside: convert(point, to: subview), with: event) {
                    return true
                }
            }
            return false
        }
    }
  1. 在PageViewController实例中为此视图创建一个出口。
  2. 设置translateAutoresizingMaskINtoConstraints=假
  3. 将出口作为子视图添加到PageViewController的根视图中
  4. 在根视图中添加定位出口的约束
  5. 将添加到页视图控制器中的视图的背景设置为清除(在接口生成器中)。
  6. 你完蛋了!将子视图和约束添加到情节提要中添加到页视图控制器的视图中。

您的PageViewControllerWill如下所示:

代码语言:javascript
运行
复制
class MyPageViewController: UIPageViewController {
    // step 3
    @IBOutlet var touchThroughView: UIView!  

    override func viewDidLoad() {
        super.viewDidLoad()

        // your regular page View Controller implementation

       // step 4
       stationaryView.translatesAutoresizingMaskIntoConstraints = false 
        // step 5
        self.view.addSubview(touchThroughView) 

        // Step 6
        touchThroughView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        touchThroughView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        touchThroughView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
        touchThroughView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    }
}

你的故事板会是这样的:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27085414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档