一些背景:我只是试图用一个简单的程序使用xcode 6 beta 7在swift中按下按钮后截图iphone.它在SpiteKit和游戏场景中完成.背景是随机png图像和"hello world"默认示例文本.我使用以下代码以编程方式在gamescene didMoveToView函数中放置一个可按下按钮(默认的太空船图像是按钮):
button.setScale(0.2)
screen.frame = CGRect(origin: CGPointMake(self.size.width/4, self.size.height/1.5), size: button.size)
screen.setImage(playAgainButton, forState: UIControlState.Normal)
screen.addTarget(self, action: "action:", forControlEvents: UIControlEvents.TouchUpInside)
self.view!.addSubview(screen)
Run Code Online (Sandbox Code Playgroud)
这会在屏幕上设置我的可按下按钮,在该按钮上链接到一个功能,使用下面的代码截取屏幕截图:
func action(sender:UIButton!){
UIGraphicsBeginImageContext(self.view!.bounds.size)
self.view!.layer.renderInContext(UIGraphicsGetCurrentContext())
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
}
Run Code Online (Sandbox Code Playgroud)
所以这个代码采取截图,但是当我看着照片,只压按钮可以显示与图像的其余部分是白色的.图像如下所示:

下面,我认为屏幕截图应该是这样的,因为这是屏幕在模拟器中的样子(我只是使用了一些随机图像/文本作为背景):

有人可以向我解释为什么屏幕截图程序还没有拍摄背景图片以及如何修复它?
我已经在线查看了,我还没有看到任何问题可以解决我的问题.在线我看到了一些类似的问题并尝试了他们的修复:我导入了quartzCore,coreGraphics和coreImages,但没有修复.此外,我尝试使用ViewController并在那里设置一个带有IBaction的UI按钮进行屏幕截图,但仍然获得相同的白色背景图像.我尝试了不同的背景图像,结果相同.
我对编程很新,所以,任何帮助将不胜感激!先感谢您!
在ObjC中,您只需使用类方法调用类方法即可NSObject.
[Machine performSelector:@selector(calculate:) withObject:num];
Run Code Online (Sandbox Code Playgroud)
但是你如何在Swift 2.2中做到这一点?
@objc(Machine) // put it here, so you can simply copy/paste into Playground
class Machine: NSObject {
static func calculate(param: NSNumber) -> String {
if param.integerValue > 5 {
return "42"
}
return "42" // there is only 1 answer to all the questions :D
}
}
if let aClass = NSClassFromString("Machine") {
let sel = #selector(Machine.calculate(_:))
let num = NSNumber(integer: 1337)
let answer = aClass.performSelector(sel, withObject: num) // compiler error
// let …Run Code Online (Sandbox Code Playgroud) 我有一个使用UITextCheckerApple提供的课程的应用程序.这个类有以下错误:如果iOS设备离线(通常是我的应用程序),每次我调用一些UITextChecker方法时,它会记录到控制台:
2016-03-08 23:48:02.119 HereIsMyAppName [4524:469877] UITextChecker sent string:isExemptFromTextCheckerWithCompletionHandler: to com.apple.TextInput.rdt but received error Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.TextInput.rdt was invalidated."
Run Code Online (Sandbox Code Playgroud)
我不希望此消息发送垃圾邮件.有没有办法从代码中禁用日志记录?我会在调用任何UITextCheckers方法之前禁用日志记录,然后重新启用它.或者是否有任何方法可以选择性地禁用每个类的日志记录(如果基础类不是我的,则为事件)?或任何其他解决方案?
ios ×3
swift ×3
image ×1
logging ×1
nslog ×1
reflection ×1
screenshot ×1
sprite-kit ×1
swift2.2 ×1