Tag: swift3

第一次加载时,NSCache不适用于所有图像

我正在swift 3.0中的一个项目woking我在哪里caching服务器的响应通过使用NSCache作为填充它们在UITableView。 然而,由于某种原因,我只看到几个图像加载时,第一次加载的应用程序,但如果如果我滚动,回来我看到的一切(检索服务器的响应结束我重新加载我的tableview,但似乎不是这种情况)。 我不知道我在这里错过了什么,代码如下,以显示如何caching图像。 let imageCache = NSCache<AnyObject, AnyObject>() var imageURLString : String? extension UIImageView { public func imageFromServerURL(urlString: String) { imageURLString = urlString if let url = URL(string: urlString) { image = nil if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage { self.image = imageFromCache return } URLSession.shared.dataTask(with: url, completionHandler: { (data, […]

属性初始值设定项内不能使用实例成员

我写了一个自定义UIView ,我发现了一个奇怪的问题。 我认为这是一个非常基本的概念,但我不明白,感叹….. class ArrowView: UIView { override func draw(_ rect: CGRect) { let arrowPath = UIBezierPath.bezierPathWithArrowFromPoint(startPoint: CGPoint(x:bounds.size.width/2,y:bounds.size.height/3), endPoint: CGPoint(x:bounds.size.width/2, y:bounds.size.height/3*2), tailWidth: 8, headWidth: 24, headLength: 18) let fillColor = UIColor(red: 0.00, green: 0.59, blue: 1.0, alpha: 1.0) fillColor.setFill() arrowPath.fill() } } 这段代码工作正常,但如果我抓住了这一行的重写绘制function,它不会编译。 错误说我不能使用边界属性。 let arrowPath = UIBezierPath.bezierPathWithArrowFromPoint(startPoint: CGPoint(x:bounds.size.width/2,y:bounds.size.height/3), endPoint: CGPoint(x:bounds.size.width/2, y:bounds.size.height/3*2), tailWidth: 8, headWidth: […]

意外地发现零,而解包可选值keyboardWillShow

我有下面的代码在keyboardWillShowNotification被调用时运行: func keyboardWillShow(_ notification: Notification) { //ERROR IN THE LINE BELOW keyboard = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue animaton = (notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as AnyObject).doubleValue UIView.animate(withDuration: 0.4, animations: { () -> Void in self.scrollView.frame.size.height = self.scrollViewHeight – self.keyboard.height }) } 我在第二行发生错误,说: unexpectedly found nil while unwrapping an Optional value 。 基本上每当我点击其中一个textField时,键盘的这个通知就会被调用, keyboardWillShow的代码将会运行。 我知道, if…let我发言,但我想知道为什么我没有这个。 我不知道我是如何得到这个错误或如何debugging它。 是因为我是从模拟器运行它吗? 以下是打印notification.userInfo给出的内容: NSRect:{{0,315},{320,253}},AnyHashable(“UIKeyboardIsLocalUserInfoKey”):1,AnyHashable(“UIKeyboardBoundsUserInfoKey”):NSRect:{{0,0} (“UIKeyboardAnimationCurveUserInfoKey”):7,AnyHashable(“UIKeyboardCenterBeginUserInfoKey”):NSPoint:{160,694.5},AnyHashable(“UIKeyboardCenterEndUserInfoKey”):NSPoint:{160,441.5},AnyHashable […]

添加到SpriteKit中的父项时,未存档的节点不会显示

以前我一直在质疑是否可以使用场景编辑器创build复杂的SKSpriteNodes,而不是使用它来布局SKScenes。 在@Anton Rogachevskyi的帮助下,我开始使用unarchiveNodeFromFilefind.SKS文件。 它会像我所期望的那样加载sks文件,但是当我尝试将它添加到当前场景时,不会出现任何内容。 如果我在addChild行中断,并预览正确显示在预览窗口中的对象,所以我知道它find了正确的文件。 sks文件里面是一个自定义对话框类,并在“必需的init?(coder aDecoder:NSCoder)”中设置断点。“我可以告诉自定义对象正在初始化正确。 在对话框类的内部,我以编程方式向对象添加一个粉红色的框,以显示它到达类的init class TeamDialog: SKSpriteNode { init(size: CGSize) { super.init(texture: nil, color: .red, size: size) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setup() } func setup() { let pinkBox = SKSpriteNode(color: .magenta, size: CGSize(width: 100, height: 100)) pinkBox.zPosition = 500 addChild(pinkBox) } } 而在场景中,这是我如何find对象,并尝试将其添加到场景,它出现在预览中,但没有显示在屏幕上 private func displayDialog() { […]

用Swift 3.0实时绘制一条线

我试图画一个UIImageView。 随着Swift 1.2,我能够得到它的工作,但我不得不将其转换为3.0,我不能得到它的工作。 它需要做的就是用你的手指画出你在屏幕上画的东西。 代码没有提供任何错误,只是不显示任何内容。 variables; var lastPoint = CGPoint.zero var red: CGFloat = 0.0 var green: CGFloat = 0.0 var blue: CGFloat = 0.0 var brushWidth: CGFloat = 10.0 var opacity: CGFloat = 1.0 var swiped = false 代码; override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { swiped = false if let touch […]

在Swift 3中以编程方式使用ScrollView

我已经search了其他的问题,似乎仍然有一些麻烦创build我的scrollView以自动布局在swift 3.我能够让我的滚动显示如下图所示,但当我滚动到底部我的另一个标签没有显示,“滚动顶部”标签不会消失。 希望有人可以帮助检查我的代码在下面! import UIKit class ViewController: UIViewController { let labelOne: UILabel = { let label = UILabel() label.text = "Scroll Top" label.backgroundColor = .red label.translatesAutoresizingMaskIntoConstraints = false return label }() let labelTwo: UILabel = { let label = UILabel() label.text = "Scroll Bottom" label.backgroundColor = .green label.translatesAutoresizingMaskIntoConstraints = false return label }() override func […]

Apple Swift 3&Xcode 9 GM的Mach-O Linker(ld)错误组

这是运行良好,直到通用Xcode(和iOS 11)。 现在我得到这些错误: Apple Mach-O Linker (ld) Error Group "__T0So20AVCapturePhotoOutputC12AVFoundation01_abC16SwiftNativeTypesACWP", referenced from: xxxxxxxxxx "__T012AVFoundation37_AVCapturePhotoOutputSwiftNativeTypesPAAE012availableRawc11PixelFormatG0SaySo8NSNumberCGfg", referenced from: xxxxxxxxx " "__T0So22AVCapturePhotoSettingsC12AVFoundation01_abC16SwiftNativeTypesACWP", referenced from: xxxxxxxxxx ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 它指向的一些行是: photoSettings = AVCapturePhotoSettings(rawPixelFormatType: OSType(self.photoOutput.availableRawPhotoPixelFormatTypes.first!)) photoSettings.previewPhotoFormat = [kCVPixelBufferPixelFormatTypeKey as String: photoSettings.availablePreviewPhotoPixelFormatTypes.first!.uint32Value, kCVPixelBufferWidthKey […]

无法使用AVCapturePhotoOutput捕捉照片swift + xcode

我正在一个自定义相机应用程序和教程使用AVCaptureStillImageOutput,这是不赞成ios 10.我已经设置了相机,我现在卡在如何拍照 这里是我充分的看法,我有相机 import UIKit import AVFoundation var cameraPos = "back" class View3: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate { @IBOutlet weak var clickButton: UIButton! @IBOutlet var cameraView: UIView! var session: AVCaptureSession? var stillImageOutput: AVCapturePhotoOutput? var videoPreviewLayer: AVCaptureVideoPreviewLayer? override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) clickButton.center.x = cameraView.bounds.width/2 […]

为什么“scheduledTimer”会在块外部设置时触发,但不在块内?

下面的代码片段在完成块之外被调用时是完美的,但是当我在块内部设置时,定时器永远不会被触发。 我不明白为什么有一个区别: self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.foo), userInfo: nil, repeats: true) 最初在块外面调用它时,我并没有使用自引用,但是一旦进入,它就是必需的。 不过,我再次testing了完全相同的代码,它仍然工作。 该块是一个完成HealthKit在询问对HealthKit相关信息的许可后调用。

成员操作符“%”必须至less有一个types为“ViewController”的参数

我试图创build一个简单的Swift 3模板与自定义函数计算百分比使用Xcode应用程序中的后缀一元运算符。 这可能看起来像一个重复的问题,因为在我以前的post中接受的答案已经显示了如何在Playground中做到这一点。 但是我发现自定义函数在Xcode项目中的工作方式不同。 在下面的模板中 ,我'operator' at file scope (或者至less我相信我做过)声明了'operator' at file scope 。 但是当声明后缀函数时,Xcodebuild议 Operator '%' declared in type 'ViewController' must be 'static' 并提供修复它插入static 。 static插入Xcode然后build议 Member operator '%' must have at least one argument of type 'ViewController'. 任何人都可以解释为什么%函数需要在Xcode项目中是static ,以及最后的错误消息在同一行的上下文中是什么意思? 谢谢 模板草案 import UIKit postfix operator % class ViewController: UIViewController { var percentage = […]