UIView中心物业给出了意想不到的结果

时间:2016-02-27 04:46:55

标签: ios iphone swift uiview uikit

我正在尝试以编程方式设计屏幕。首先,我设置了导航栏。之后我添加了一个表视图,之后我添加了一个普通的UIView。我在使用上次添加的.center的{​​{1}}属性时遇到了问题。我想在此视图中添加UIView。我的代码如下(使用大的白色活动指示器的默认高度和宽度,每个37pt):

UIActivityIndicatorView

在上面的代码中,如果您仔细查看,我已评论func setupActivityView() { let screen = UIScreen.mainScreen().bounds let view = UIView(frame: CGRectMake(0.0, self.navbar.frame.height, screen.width, UIScreen.mainScreen().bounds.height-self.navbar.frame.height)) view.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.80) //view.hidden = true self.activityView = view self.view.addSubview(view) let spinner = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge) spinner.startAnimating() spinner.hidesWhenStopped = true self.spinner = spinner /*POINT:1*/ //spinner.center = view.center /*POINT:2*/ //spinner.frame.size = CGSizeMake(37.0, 37.0) /*POINT:3*/ spinner.frame = CGRectMake((view.frame.width/2) - 18.5, (view.frame.height/2) - 18.5, 37.0, 37.0) view.addSubview(spinner) } POINT:1并使用POINT:2。这给了我以下结果(这是正确的和预期的):

enter image description here

现在,当我使用POINT:3 POINT:1并评论POINT:2时如下:

POINT-3

我得到以下结果(我猜,错误和意外):

enter image description here

那么我的两种方法究竟有什么不同呢?这里到底出了什么问题?我对这两种方法的理解是错误的吗?如果是,那么这里究竟发生了什么?

1 个答案:

答案 0 :(得分:0)

  
      
  1. ViewDidload

         

    在此方法中,您将无法正确查看宽度和高度。您可以   打印视图宽度和高度然后你就会知道原因。

  2.   
  3. ViewDidAppear

         

    当视图实际可见时调用viewDidAppear,所以你的   代码必须放在这里//现在检查

  4.