使CGRectMake框架粘到底部

时间:2014-01-12 09:02:43

标签: ios iphone objective-c

我正在尝试扩展视图以适应屏幕的剩余高度。问题是我试图在iPhone 4和iPhone 5布局上都这样做。

我想要做的是拥有我的CGRectMake代码,以便框架只是固定在主视图的底部。有没有办法做这样的事情?谢谢!

继承我的webView CGRectMake代码:

webView.frame = CGRectMake(0, 167, 320, 313);

4 个答案:

答案 0 :(得分:2)

尝试在此处使用自动布局以避免硬编码。

webView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
webView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:webView];

NSDictionary *viewsDict = @{@"webView" : webView};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-167-[webView]-0-|" 
                  options:0 metrics:nil views:viewsDict]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[webView]-0-|" 
                  options:0 metrics:nil views:viewsDict]];

执行自动旋转

时,您还可以避免布局问题

答案 1 :(得分:0)

您可以对视图框进行引用以实现此目的。

webView.frame = CGRectMake(0, 167, 320, self.view.frame.size.height - 167);

答案 2 :(得分:0)

如果你有一个固定的起始高度,那就太容易了:

int startHeight = 167;
int frameHeight = self.view.frame.size.height - startHeight;
webView.frame = CGRectMake(0, startHeight, 320, frameHeight);

这样做是为了获得视图的高度,然后它减去窗口的起始偏移量。 为了实现这一点,代码需要在UIWindow上显示视图后执行,这意味着您需要在viewDidAppear而不是viewDidLoad中执行它。

答案 3 :(得分:0)

如果您放弃直接设置框架rects并拥抱自动布局,这将很容易。

相关问题