【问题标题】:Center the activity indicator when having navigation bar有导航栏时活动指示器居中
【发布时间】:2017-03-17 12:00:47
【问题描述】:

我无法将活动指示器相对于高度居中。在我添加导航控制器之前很好,之后它水平居中但不是垂直居中。这是照片和代码。

这是在没有导航控制器时居中的代码。

_loadingView.center = self.view.center;
[self.view addSubview:_loadingView];

请帮忙。谢谢!!

【问题讨论】:

  • 尝试进入 -(void)viewWillAppear:(BOOL)animated _loadingView.center = CGPointMake(self.view.frame.size.width / 2.0, (self.view.frame.size.height - navigationBarHeight - tabBarHeight) / 2.0);
  • 试试这个 CGFloat navigationBarHeight = self.navigationController.navigationBar.frame.size.height; CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height; _loadingView.center = CGPointMake([UIScreen mainScreen].bounds.size.width / 2.0, ([UIScreen mainScreen].bounds.size.height - navigationBarHeight - tabBarHeight) / 2.0)
  • 不。没用。和以前一样。
  • 都试过了。还是和以前一样。

标签: ios objective-c iphone uiactivityindicatorview


【解决方案1】:

UIViewController 的视图在其父坐标空间中报告其 center 坐标,这就是它垂直偏移导航栏高度的原因。

如果您想以与现在类似的方式放置指示器,请自行计算中心坐标:

CGPoint center = CGPointMake(self.view.bounds.size.width / 2.0, self.view.bounds.size.height / 2.0) _loadingView.center = center; [self.view addSubview:_loadingView];

确保在主视图的边界发生变化时更新此内容,即在另一个答案中提到的-viewDidLayoutSubviews 中。

然而,这一切都可以通过采用Auto Layout 并设置两个中心约束来更新和简化,每个轴一个。您可以在 Interface Builder 模式或代码中执行此操作,请查看文档。

【讨论】:

    【解决方案2】:

    试试这个

    _loadingView.center = self.navigationController.view.center;
    [self.navigationController.view addSubview:_loadingView];
    

    不一样的感觉

    【讨论】:

      【解决方案3】:

      你可以试试这个方法,也请检查下面的链接

      - (void) viewDidLayoutSubviews {    
      
          _loadingView.center = self.view.center; 
      
      }
      

      https://stackoverflow.com/a/11587804/5184217

      【讨论】:

      • 不!它变得更沉而不是起来。
      【解决方案4】:

      在属性检查器的顶部栏下检查您的导航控制器和视图控制器。

      【讨论】:

        【解决方案5】:

        它将帮助您解决问题

        _loadingView = CGPointMake(self.view.frame.size.width / 2.0, (self.view.frame.size.height - navigationBarHeight - tabBarHeight) / 2.0)
        
        [self.view addSubview:_loadingView];
        

        【讨论】:

        • 是的,我也试过这个,从这个得到的:stackoverflow.com/a/11587804/5184217 也没有工作。
        • 你必须从指示器框架中减去你的导航栏高度。
        • 指标框架?有什么代码吗?我是新手,所以还不太了解。
        • @mustafaHassan 我现在编辑了。将这行代码复制到您的项目中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多