gpt4 book ai didi

ios - UIGraphicsGetCurrentContext 和 UIScrollView

转载 作者:行者123 更新时间:2023-11-28 19:10:57 26 4
gpt4 key购买 nike

我正在尝试将 UIScrollView 的所有内容保存为 .pdf。我找到了一些保存当前 View 的教程,它们都依赖于使用 UIGraphicsGetCurrentContext() 创建 CGContextRef。现在,我用

CGContextRef context = UIGraphicsGetCurrentContext();
[myView.layer renderInContext:context];

这对于普通的 UIView 来说效果很好。但是,当我尝试将 UIScrollView 作为 myView 传递时,它可以很好地传递 UIScrollView 的可见部分,但屏幕外的任何内容都只是空白。 有没有办法以某种方式扩展 context 以获取我的 UIScrollView 中的所有内容,而不仅仅是当前可见的内容?我怀疑我不能使用 UIGraphicsGetCurrentContext() 用于 UIScrollView,但我不知道该用什么代替,the Apple docs在这方面并不是很有帮助。

最佳答案

如果您有一个 subview 将 ScrollView 的整个内容大小与滚动内容一起使用,您可以这样做:

CGContextRef context = UIGraphicsGetCurrentContext();
UIView *contentView = [scrollView subviews][0];
[contentView.layer renderInContext:context];

如果 scrollView 中有多个 View ,你可以这样做:

UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(
scrollView.frame.origin.x,
scrollView.frame.origin.y,
scrollView.contentSize.width,
scrollView.contentSize.height)];
for(UIView *view in [scrollView subviews]){
[contentView addSubview: view];
}

CGContextRef context = UIGraphicsGetCurrentContext();
[contentView.layer renderInContext:context];

然后您需要将 View 返回到 ScrollView 中。可能有一种方法可以复制它们,但我不确定如何复制。无论如何,这是应该起作用的:

for(UIView *view in [contentView subviews]){
[view removeFromSuperView];
[scrollView addSubview:view];
}

关于ios - UIGraphicsGetCurrentContext 和 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com