【发布时间】:2016-01-26 10:57:32
【问题描述】:
从昨天开始我就一直坚持这个。我试图仅捕获UIView 中的一些subviews。这个主要的UIView有4个subviews,即header、caption、image和footer。我正在尝试仅捕获caption 和image。
我尝试使用UIGraphicsBeginImageContextWithOptions() 并将CGSize 从caption 的y 坐标设置为image 的height。但是,它仍然不只捕获caption 和image。
我也尝试使用UIStackView,在这里,我只能捕获caption 和image,但stackview 本身仍然保持主要UIView 的大小。我可以解决大小问题,但我使用UIStackView 时遇到的主要问题是,当我使用addArrangedSubview: 时,添加的subview 会从主UIView 中消失。
我对如何去做这件事感到困惑?仅使用UIGraphicsBeginImageContextWithOptions() 不允许我仅捕获caption 和image,而使用UIStackView 会使caption 和image 从主UIView 中消失。
我希望这个解释没有引起混淆,我很乐意为大家解惑。
请告诉我有关仅捕获主要UIView 中的一些子视图的最佳方法。
感谢任何帮助!
提前非常感谢!
编辑:
对我有用的方法,感谢 PaulDaPigeon 的 cmets。我最终使用了UIGraphicsBeginImageContextWithOptions()。
- (UIImage *) extractImageOfSubviewFromView: (UIView *)view {
CGRect finalImageRect = CGRectMake(0, 0, view.frame.size.width, (view.lblCaption.frame.size.height + view.image.frame.size.height));
UIGraphicsBeginImageContextWithOptions(finalImageRect, NO, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(finalImageRect, 0, - view.header.frame.size.height);
[view.layer renderInContext:context];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
希望这对将来的某人有所帮助!
【问题讨论】:
标签: ios objective-c uiview uiimage