相关疑难解决方法(0)

如何以编程方式截取屏幕截图

我想在屏幕上保存到保存的照片库中的图像截图

iphone screenshot ios

152
推荐指数
10
解决办法
12万
查看次数

使用snapshotViewAfterScreenUpdates创建的UIView的UIImage:

是否有可能从创建的UIView获取UIImage snapshotViewAfterScreenUpdates

snapshotViewAfterScreenUpdates当作为子视图添加时,UIView返回看起来很好,但是下面会产生一个黑色图像:

UIView *snapshotView = [someView snapshotViewAfterScreenUpdates:YES]; 
UIImage *snapshotImage = [self imageFromView:snapshotView]; 

- (UIImage *)imageFromView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
    // [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // <- same result...
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}
Run Code Online (Sandbox Code Playgroud)

当然可以在不依赖的情况下获取图像snapshotViewAfterScreenUpdates:

UIImage *snapshotImage = [self imageFromView:someView];
Run Code Online (Sandbox Code Playgroud)

不幸的是,在捕捉复杂视图时,drawViewHierarchyInRect速度无法与之匹敌snapshotViewAfterScreenUpdates.我希望UIImage从创建的视图中获取它会更快snapshotViewAfterScreenUpdates,这可能吗?

screenshot snapshot uiview uiimage ios7

25
推荐指数
1
解决办法
2万
查看次数

CADisplayLink OpenGL渲染会破坏UIScrollView行为

SO上有一些类似的问题(最后的链接),但是没有一个能让我解决我的问题,所以这里有:

我正在使用OpenGL渲染来制作图像平铺和缓存库以供在游戏项目中使用,我想劫持UIScrollView的物理特性以允许用户在图像周围导航(因为它有很好的反弹行为,可能是好好利用它).所以我有一个UIScrollView,我用它来获取纹理的渲染视图,但是有一个问题 - 在滚动视图上移动会阻止CADisplayLink触发,直到用户完成滚动(这看起来很糟糕).一个临时修复是使用NSRunLoopCommonModes而不是默认的运行模式,但不幸的是,这打破了我正在测试的某些手机上的滚动视图行为的某些方面(3GS和模拟器似乎工作正常,而iPhone4和3G没有"T).

有谁知道如何解决CADisplayLink和UIScrollView之间的这种冲突,或者知道如何修复在其他运行模式下工作的UIScrollView?提前致谢 :)

承诺链接到类似的问题: UIScrollView损坏并停止使用OpenGL渲染滚动(相关的CADisplayLink,NSRunLoop)

在iPhone上拖动UIScrollView时,OpenGL ES视图中的动画会冻结

iphone opengl-es

24
推荐指数
1
解决办法
1万
查看次数

标签 统计

iphone ×2

screenshot ×2

ios ×1

ios7 ×1

opengl-es ×1

snapshot ×1

uiimage ×1

uiview ×1