如何让UIView在进入图像之前正确布局

时间:2013-06-01 12:02:08

标签: ios uiview autolayout

我正在使用此代码将UIView渲染成图像

-(UIImage *)getImageForView:(UIView *)aView {     
UIGraphicsBeginImageContextWithOptions(aView.bounds.size, NO, 0.0);
[aView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}

我遇到的问题是使用autolayout未正确设置视图。我该怎么办。

我目前创建一个UIView“viewA”,其框架是我视图的正确尺寸,然后创建我复杂的预期视图“ViewB”(其上有自动布局),然后将viewB作为子视图添加到“viewA”然后我给上面的方法提供viewA。

首先我认为viewA不必添加到某个superview但是它没有正确布局,如果我将alphaA的viewA添加到superview,那么我假设可能会使用“layoutIfNeeded”但是我应该这样看?

编辑:以下是创建UIView的代码

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 439)];

//This is the UIView that contains a lot of views
MyView *myView = [[MyView alloc] init];

myView.translatesAutoresizingMaskIntoConstraints = NO;

[view addSubview:myView];

[view addConstraints:[NSLayoutConstraint
                      constraintsWithVisualFormat:@"V:[myView(439)]"
                      options:0
                      metrics:nil
                      views:NSDictionaryOfVariableBindings(myView)]];

[view addConstraints:[NSLayoutConstraint
                      constraintsWithVisualFormat:@"H:[myView(320)]"
                      options:0
                      metrics:nil
                      views:NSDictionaryOfVariableBindings(myView)]];

最终为我做了什么

[myView layoutIfNeeded];
[view layoutIfNeeded];

换句话说,在两个视图上调用它。

1 个答案:

答案 0 :(得分:7)

在您的视图上下文中呈现layoutIfNeeded消息之前发送它。