【问题标题】:Center a UIActivityIndicatorView for a UITableViewController in the window, not in the table view将 UITableViewController 的 UIActivityIndi​​catorView 居中在窗口中,而不是在表格视图中
【发布时间】:2017-01-27 02:54:36
【问题描述】:

我在界面设计器中的表格视图中有一个UIActivityIndicatorView。我正在尝试使用以下方法将其置于屏幕中间:

   override func viewWillLayoutSubviews() {
        self.activityView.center = self.view.center
    }

但它似乎总是在页面上太“低”,它似乎位于 UITableView 的中间,而不是像我想要的那样位于窗口中间(即它被导航栏等)

【问题讨论】:

    标签: ios swift uitableview uiactivityindicatorview


    【解决方案1】:

    解决方案是将activityView 框架设置为视图的边界。仅设置中心不起作用,因为 tableView 框架的 y 值为负数。

    override func viewWillLayoutSubviews() {
        self.activityView.translatesAutoresizingMaskIntoConstraints = true
        self.activityView.frame = self.view.bounds
    }
    

    【讨论】:

      【解决方案2】:

      使用自动布局,您可以使用layoutMarginsGuideUITableViews 和UICollectionViews 中获得正确的中心X、Y 锚点:

      activityView.translatesAutoresizingMaskIntoConstraints = false
      activityView.centerXAnchor.constraint(equalTo: view.layoutMarginsGuide.centerXAnchor).isActive = true
      activityView.centerYAnchor.constraint(equalTo: view.layoutMarginsGuide.centerYAnchor).isActive = true
      

      【讨论】:

        【解决方案3】:

        你试过了吗:

          self.activityView.center = self.view.window?.center
        

        如果没有,那该怎么办:

        let screenSize = UIScreen.main.bounds
        self.activityView.center = CGPoint(x: screenSize.width / 2, y: screenSize.height / 2)
        

        它有点长,但可以很好地处理通话状态栏。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多