繁体   English   中英

如何仅将UIView的某些子视图转换为UIImage

[英]How to convert only some of the subviews of a UIView to UIImage

从昨天开始我就一直坚持下去。 我试图仅捕获UIView某些subviews 此主UIView具有4 subviewsheadercaptionimagefooter 我正在尝试仅捕获captionimage

我试图使用UIGraphicsBeginImageContextWithOptions()并将CGSizecaptiony坐标设置为imageheight 但是,它仍然不能仅捕获captionimage

我也尝试过使用UIStackView ,在这里,我只能捕获captionimage但是stackview本身仍然保持主UIView的大小。 我可以解决大小调整的问题,但是使用UIStackView主要问题是,当我使用addArrangedSubview: ,要添加的subview将从主UIView消失。

我对如何执行此操作感到困惑? 仅使用UIGraphicsBeginImageContextWithOptions()不允许我仅捕获captionimage而使用UIStackView会使captionimage从主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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM