调整从xib创建的UIView的大小?

时间:2014-10-07 12:59:09

标签: ios uiview autolayout xib

我正在从xib创建一个UIView,最终呈现为UIImage。

UIView本身具有内部约束,在IB中具有足够大的帧大小时可以正常工作。但是,我需要将宽度调整为某些特定内容,我无法弄清楚如何在从xib加载后设置UIView的宽度。

[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil][0];

要渲染视图,我这样做:

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

无论我设置的是什么,UIView的大小与IB中的初始大小相同。如何设置UIView的大小,以便它会导致内部约束调整大小并正确呈现?

1 个答案:

答案 0 :(得分:6)

尝试设置所需的视图框架,然后在其上调用layoutIfNeeded:

UIView *view = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil][0];
CGRect finalFrame = CGRectMake(0, 0, 90, 90);
view.frame = finalFrame;
[view layoutIfNeeded];

UIGraphicsBeginImageContextWithOptions(finalFrame.size, NO, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();