Tag: 快速

所有符合协议的类inheritance默认实现

我已经为我的所有UIViewController子类添加了一个方法,它允许我从类和它内部的故事板实例化它。 所有的方法都遵循这种格式: class func instantiateFromStoryboard() -> CameraViewController? { let storyboard = UIStoryboard(name: "Camera", bundle: nil) let initial = storyboard.instantiateInitialViewController() guard let controller = initial as? CameraViewController else { return nil } return controller } 相反 ,我想做一个协议, Instantiatable ,需要上面的方法以及一个variablesstoryboardName: String 。 然后,我想扩展这个Instantiatable所以它包含一个类似于上面的实现。 我的目标是我可以说,一个UIViewController坚持这个协议,我所要定义的是storyboardName 。 我觉得我接近这个实现: protocol Instantiatable { var storyboardName: String { get } func instantiateFromStoryboard() […]

用CFStringTransform和Swift 3模糊地使用'init'

在尝试构buildBonMot的示例项目时, let theCFMutableString = NSMutableString(string: myString) as CFMutableString CFStringTransform(theCFMutableString, UnsafeMutablePointer<CFRange>(nil), kCFStringTransformToUnicodeName, false) 我在CFStringTransform行上得到这个错误 Ambiguous use of 'init' Xcode 8项目使用Swift 3

以编程方式更改方向无法正常工作

我的整个应用程序是在portrait模式。 我只想在landscape模式下使用一个视图控制器(左)。 func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { if let _navigationController = window?.rootViewController as? UINavigationController { if _navigationController.topViewController is FullScreenPlayerVC { return UIInterfaceOrientationMask.LandscapeLeft } } return UIInterfaceOrientationMask.Portrait } 这是我的控制器A. override func shouldAutorotate() -> Bool { return true } override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return UIInterfaceOrientationMask.Portrait } 现在我推控制器B.这是我的控制器B. override func viewDidAppear(animated: Bool) […]

如何从自定义CollectionViewCell推动VC哪些是在TableViewCell上?

我有一个tableView和单元格,单元格上我有一个collectionView和显示它的一些内容。 我想发送一个selectindexPath的链接。 我想从TableViewCell上的Custom CollectionViewCell推送/呈现我的视图。 class secondTopicTableViewCell: UITableViewCell { @IBOutlet weak var relatedCustom: UICollectionView! var relArray = NSArray() func loadArray(arr: NSArray) { self.relArray = arr self.relatedCustom.reloadData() } } extension secondTopicTableViewCell : UICollectionViewDataSource { func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return relArray.count } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell […]

在创build一系列NSTextContainers时,如何根据文本内容指定容器中断?

我创build了一系列NSTextContainers来保存来自HTML资源的文本。 我能够将HTML添加到一个属性string,将其分配给NSTextStorage和NSLayoutManager,并创build一系列NSTextContainers来保存所有文本。 我的问题是,我想在文本中添加“分页符”,即停止填充此文本容器,并开始另一个…在文档中,我find了一些调用NSControlCharacterContainerBreakAction; 但我不清楚如何实施,或者即使是最好的方法。 下面的代码片段是我如何通过文本容器(在Swift中)构build的。 var myLayoutManager = NSLayoutManager() var myText:NSAttributedString = { let path = NSBundle.mainBundle().URLForResource("localfile", withExtension: "html") let opts = [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType] return NSMutableAttributedString(fileURL: path, options: nil, documentAttributes: nil, error: nil)! }() myTextStorage = NSTextStorage(attributedString: myText) myTextStorage.addLayoutManager(myLayoutManager) //Create all textContainers to hold text if myLayoutManager.textContainers.count == 0 { var range = NSMakeRange(0, 0) while(NSMaxRange(range) […]

我的应用程序崩溃,因为我的精灵套件游戏中未完成的声音

无法理解为什么我的应用程序崩溃总是在播放声音的时候出现背景。 如果这里没有声音的应用程序不会崩溃。 我有一个发挥声音的SKAction 。 我预先加载这个歌曲与static let在Actions类,并调用static func返回SKAction的声音。 所以我有完成水平的声音。 当它播放,我打回家button,他们回到应用程序。 有应用程序崩溃消息“线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xff8e9abc)”。 有没有人知道这里发生了什么? 这是我的结构称为Actions : public struct Actions { static let completionSound = SKAction.playSoundFileNamed("CompletionSound.mp3", waitForCompletion: false) static func playCompletionSound() -> SKAction { return completionSound } } 在我的class级叫做Grid ,我有条件,不pipe级别是否完成: class Grid { var delegate: GridDelegate? private var completed: Bool = false … … private func completeLevel() […]

核心数据Swift在优化的版本中抛出generics函数失败

我们有一个相当广泛的核心数据模型的应用程序,在Objective C中实现了大量的自定义子类,但是这些子类也是使用Swift编写的应用程序的一部分。 (值得一提的是:我们正在使用Xcode 7.3.1和iOS 9.3进行构build,因此Swift代码是2.2)。 有一个用Swift编写的帮助函数,看起来像这样: extension NSManagedObject { func inContext<T: NSManagedObject>(moc: NSManagedObjectContext) -> T? { guard self.managedObjectContext != moc else { return (self as! T) } do { let obj = try moc.existingObjectWithID(self.objectID) return (obj as! T) // <— fails here } catch let error { return nil } } } 这在对象跳转上下文的相当多的地方被调用。 调用代码通常如下所示: let […]

不可靠的UIBezierpath曲线机制,控制点和曲线点

我试图使用UIBezierPath绘制一个简单的抛物线形状。 我有一个maxPoint和一个boundingRect我正在基础的抛物线的宽度和拉伸。 这里是我绘制抛物线的函数(我在容器视图中绘制抛物线, rect将是container.bounds ): func addParabolaWithMax(maxPoint: CGPoint, inRect boundingRect: CGRect) { let path = UIBezierPath() let p1 = CGPointMake(1, CGRectGetMaxY(boundingRect)-1) let p3 = CGPointMake(CGRectGetMaxX(boundingRect)-1, CGRectGetMaxY(boundingRect)-1) path.moveToPoint(p1) path.addQuadCurveToPoint(p3, controlPoint: maxPoint) // Drawing code … } 我的问题是,我希望在maxPoint中发送的maxPoint成为抛物线本身的实际极点。 因此,例如,如果我发送(CGRectGetMidX(container.bounds), 0) ,最高点应该在最顶端的中心。 但是在使用这个特定点的函数时,结果是这样的: 那么究竟是什么path呢? 或换句话说,我怎样才能从controlPoint点到我需要的实际最大点? 我试着根据boundingRect的高度来添加和减去y值中的不同值,但是我找不到正确的组合,因为在具有不同y值的不同点中,它的行为有所不同。 似乎有一些乘法器被join,我该如何解决?

CLLocation提示显示并在一瞬间消失

在我的应用程序,我尝试从GPS获取经度和纬度。 要做到这一点,我必须要求用户有权访问他的位置。 在我这样做之前,我添加到Info.plist这两个规则: Privacy – Location When In Use Usage Description和Privacy – Location Always Usage Description ,然后在AppDelegate询问有关执行此操作的权限(SWIFT 3.0): if CLLocationManager.locationServicesEnabled() == true { let localisationManager = CLLocationManager() localisationManager.requestWhenInUseAuthorization() localisationManager.startUpdatingLocation() } 在运行应用程序的同时,我可以看到UIAlertController ,但几乎在同一时间它消失,我没有时间点击Allow ,我不能使用GPS。 如何解决它? 我的问题的工作解决scheme: 我在class LocationManager and then I used it in function.创build了单独的variablesvar locationManager = CLLocationManager() class LocationManager and then I used it in […]

如何获得当前位置UIImagePickerController捕获图像?

我研究了如何从UIImagePickerController摄像头返回的图像中获取位置数据。 不过,我认为最简单的方法就是在UIImagePickerController捕获图像的时候从CLLocationManager获取当前位置。 有没有办法做到这一点? 有没有一种方法来听取“capturePhoto”事件? 只是为了澄清,使用我的应用程序的用户可能会移动得很快。