[英]How to convert only some of the subviews of a UIView to UIImage
从昨天开始我就一直坚持下去。 我试图仅捕获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的评论。 我最终使用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;
}
希望这对以后的人有所帮助!
做到这一点的正确方法似乎是使用UIGraphicsBeginImageContextWithOptions()
但是与其添加视图本身, [stackView addArrangedSubview:subview.copy];
尝试添加[stackView addArrangedSubview:subview.copy];
以避免将其从主视图中删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.