【发布时间】:2013-06-01 12:02:07
【问题描述】:
我正在使用此代码将 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];
换句话说,在两个视图上都调用它。
【问题讨论】:
-
显示视图创建和添加子视图的代码。你在设置框架吗?
-
完成。期待您的想法。
-
尝试:MyView *myView = [[MyView alloc] initWithFrame: view.bounds];
标签: ios uiview autolayout