4

我正在使用此代码将 UIView 呈现为图像

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

我遇到的问题是视图没有使用自动布局正确设置。我该怎么办。

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

首先,我认为 viewA 不必添加到某些超级视图,但它的布局不正确,我是否应该将 alpha 为 0 的 viewA 添加到超级视图,然后我假设可能可以使用“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];

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

4

1 回答 1

8

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

于 2013-06-01T19:19:44.407 回答