【问题标题】:How to convert only some of the subviews of a UIView to UIImage如何仅将 UIView 的某些子视图转换为 UIImage
【发布时间】:2016-01-26 10:57:32
【问题描述】:

从昨天开始我就一直坚持这个。我试图仅捕获UIView 中的一些subviews。这个主要的UIView有4个subviews,即headercaptionimagefooter。我正在尝试仅捕获captionimage

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

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

我对如何去做这件事感到困惑?仅使用UIGraphicsBeginImageContextWithOptions() 不允许我仅捕获captionimage,而使用UIStackView 会使captionimage 从主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


    【解决方案1】:

    执行此操作的正确方法似乎是使用UIGraphicsBeginImageContextWithOptions(),但与其添加视图本身,不如尝试[stackView addArrangedSubview:subview.copy]; 以避免将其从主视图中删除。

    【讨论】:

    • 感谢您的回复。您认为我应该如何使用UIGraphicsBeginImageContextWithOptions(),以便它只有captionimage 而不是headerfooter?我试图在UIGraphicsBeginImageContextWithOptions() 中设置CGSize,以便它只包括captionimage,但它仍然需要主要的UIView
    • 据我所知,您不能从上下文中排除子视图,但如果它们与您想要获得的视图不重叠,您可以尝试UIRectClip 切断您不使用的部分不需要。或者,您可以暂时隐藏不需要的子视图。
    • 谢谢!我已经用我最终使用的方法更新了我的帖子。
    猜你喜欢
    • 2011-07-25
    • 2012-12-25
    • 2016-08-13
    • 1970-01-01
    • 2018-01-09
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多