我想知道我的iPhone应用程序如何利用特定的屏幕截图UIView
作为UIImage
.
我试过这段代码,但我得到的只是一张空白图片.
UIGraphicsBeginImageContext(CGSizeMake(320,480));
CGContextRef context = UIGraphicsGetCurrentContext();
[myUIView.layer drawInContext:context];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
myUIView
尺寸为320x480,并且有一些子视图.这样做的正确方法是什么?
我正在制作放大镜应用程序,允许用户触摸屏幕并移动他的手指,将有一个放大镜与他的手指路径.我通过截屏实现它并将图像分配给放大镜图像视图,如下所示:
CGSize imageSize = frame.size;
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextScaleCTM(c, scaleFactor, scaleFactor);
CGContextConcatCTM(c, CGAffineTransformMakeTranslation(-frame.origin.x, -frame.origin.y));
[self.layer renderInContext:c];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenshot;
Run Code Online (Sandbox Code Playgroud)
问题是这个问题很self.layer renderInContext
慢,因此用户在移动手指时感觉不顺畅.self.layer renderInContext
然而,我试图在其他线程中运行,它使放大镜图像看起来很奇怪,因为放大镜中的图像显示延迟.
有没有更好的方法将视图渲染成图像?确实renderInContext:
使用GPU?
一些公司正在提供真正的iPhone/iPad设备的手动测试.使用鼠标和键盘,您可以直接从浏览器控制设备.
他们可能会使用类似AirPlay的东西将设备图形流式传输到浏览器.但他们如何将鼠标点击转换为iPhone/iPad上的触摸事件?由于无法在设备上运行VNC服务器,我想知道是否还有另一种方法可以做到这一点.
我有一个我正在为iPhone开发的应用程序.它的作用是,它从摄像机捕获视频并将视频文件存储到文件系统中.
在将图像保存到文件系统之前,我需要创建此视频文件的缩略图图像.我的动机是显示所创建视频的缩略图列表,以便用户可以选择特定缩略图来播放所需文件.
有人可以建议我如何创建一个由相机捕获的视频文件的缩略图图像.
另外,您能告诉我是否可以使用iOS SDK创建现有视频文件的缩略图.
在目标C中我们是否可以拍摄屏幕截图并将此图像存储在UIImage中.
我想检查一下我UILabel
是否感动了.但我还需要更多.文字被触动了吗?现在我只有在UILabel
使用这个触摸框架时才会得到true/false :
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if (CGRectContainsPoint([self.currentLetter frame], [touch locationInView:self.view]))
{
NSLog(@"HIT!");
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法检查这个?一旦我触摸到信件外面的某个地方,UILabel
我就会想要归还.
我想知道实际黑色渲染的"文字像素"何时被触及.
谢谢!
我可以让我的应用程序截取视图内容的屏幕截图并将其附加到电子邮件中吗?怎么样?
我发现这个代码非常好:
+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, [[UIScreen mainScreen] scale]);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
Run Code Online (Sandbox Code Playgroud)
但我也需要捕获UINavigationBar,因为我想在我的UIStoryboardSegue中将图像用作过渡层.有任何想法吗?
我需要渲染没有消除锯齿的UIBezierPaths,然后将它们保存为PNG以保留完整的像素表示(例如,不要让JPEG图像混淆).我在尝试触摸UIBezierPaths之前尝试调用下面的CG函数,但似乎没有对生成的渲染图像产生任何影响.路径仍然使用抗锯齿(即平滑)进行渲染.
CGContextSetShouldAntialias(c, NO);
CGContextSetAllowsAntialiasing(c, NO);
CGContextSetInterpolationQuality(c, kCGInterpolationNone);
Run Code Online (Sandbox Code Playgroud)
任何点击都将非常感激.
我有一个UIView子类.它是基于许多复杂的代码绘制一些东西,我不希望为此特定目的而打扰.
我正在使用现已弃用的contentStretch属性对我的视图进行某些更改.Apple的文档建议替换基于图像的内容 - 请参阅此处:UIView的contentStretch替换?.但是,如果内容不是基于图像的,那么该怎么做才能保持沉默.
有什么建议?在一个特定情况下,它是用于动画.
ios ×9
objective-c ×5
uiview ×5
iphone ×4
animation ×1
calayer ×1
cocoa-touch ×1
ios6 ×1
ipad ×1
screenshot ×1
stretching ×1
thumbnails ×1
uiimage ×1
uilabel ×1
vnc ×1