我没有使用Swift,所以我不需要在Xcode中使用它的文档.目前它只是与Objective C文档混淆.
是否可以在Xcode中禁用Swift部分文档?
我的故事板有UIImageView,它可以通过自动布局约束自动定位和缩放.
应用程序运行时,会根据设备屏幕大小和自动布局限制正确调整此UIImageView的大小和位置.
如何在屏幕上显示UIImageView框架后获取它?常见的UIImageView.bounds和UIImageView.frame值返回在故事板中使用的原始值,并且不反映新的UIImageView大小.
我需要将 NSView 捕获到图像中。捕获 NSWindow 也很好 - 我可以稍后裁剪出必要的视图。
我有两个要求:(1)我在视图上有半透明的按钮;(2) 即使视图部分超出屏幕,我也需要捕获图像。
这是我想要捕捉的视图:
这四种方法我都试过了,没有一个能达到我想要的效果。
方法一。
NSImage *image = [[NSImage alloc] initWithData:[view dataWithPDFInsideRect:viewRect]];
NSData *imageData = [image TIFFRepresentation];
[imageData writeToFile:fName atomically:NO];
Run Code Online (Sandbox Code Playgroud)
此方法保留按钮透明度,但忽略其图层添加,如花哨的边框:
方法2.
这是捕获 NSView 内容的推荐方法:
NSBitmapImageRep *imageRep = [view bitmapImageRepForCachingDisplayInRect:viewRect];
[view cacheDisplayInRect:viewRect toBitmapImageRep:imageRep];
NSImage *image = [[NSImage alloc] initWithSize:viewRect.size];
[image addRepresentation:imageRep];
NSData *imageData = [image TIFFRepresentation];
[imageData writeToFile:fName atomically:NO];
Run Code Online (Sandbox Code Playgroud)
此方法保留图层特征但忽略按钮透明度:
方法3.
这个方法只是将视图层渲染成图像:
NSImage *image = [[NSImage alloc] initWithSize:viewRect.size];
[image lockFocus];
CGContextRef ctx = [NSGraphicsContext currentContext].graphicsPort;
[view.layer renderInContext:ctx];
[image unlockFocus];
NSData *imageData = [image …Run Code Online (Sandbox Code Playgroud)