天道酬勤,学无止境

swift

Swift associated types and protocol inheritance

问题 我正在使用 Swift 2.2,并声明了一个关联类型的协议,如下所示: protocol CollectionViewModeling { associatedtype CellType func cellAtIndexPath(indexPath: NSIndexPath) -> CellType } 现在我有一个符合上述协议的视图模型协议: enum MyItemCell { case MyItemCell1, MyItemCell2 } protocol ItemsListViewModeling: CollectionViewModeling { associatedtype CellType = MyCell } 最后,在其他地方,我想声明一个符合 le 协议 ItemsListViewModeling 的 var: var viewModel: ItemsListViewModeling 我收到了这个错误: 协议“ItemsListViewModeling”只能用作通用约束,因为它具有 Self 或关联的类型要求 但是我可以很容易地创建一个实现这个协议的类。 是否可以将 var 声明为关联的类型化协议? 当我在协议 ItemsListViewModeling 中给出关联类型的最终类型时,我不明白为什么我会从编译器中看到这个错误。 谢谢 回答1

2022-07-11 09:48:25    分类:技术分享    swift   mvvm   protocols   associated-types

Pause and Resume UIViewAnimation when app goes to background

问题 我正在为视图设置动画,我想暂停它并恢复它。 使用苹果指南,我创建了一个 CALayer 扩展 extension CALayer { func pause() { var pauseTime = self.convertTime(CACurrentMediaTime(), fromLayer: nil) self.speed = 0.0 self.timeOffset = pauseTime } func resume() { var pausedTime = self.timeOffset self.speed = 1.0 self.timeOffset = 0.0 self.beginTime = 0.0 var timeSincePause = self.convertTime(CACurrentMediaTime(), toLayer: nil) - pausedTime self.beginTime = timeSincePause } } 这段代码运行良好,除非该应用程序进入后台。 当我将应用程序带回前台时,动画完成(即使时间没有过去)并且当我单击恢复时它没有再次启动。 好的。 我尝试为 CALayer 设置动画,但我遇到了同样的问题。 extension CALayer { func animateY(newY:CGFloat,time

2022-07-11 09:42:24    分类:技术分享    ios   swift   uiviewanimation

Check if an integer is divisible by another integer (Swift)

问题 我需要检查一个整数是否可以被另一个整数整除。 如果不是,我想将其四舍五入到最接近的数字倍数。 例子: var numberOne = 3 var numberTwo = 5 numberTwo不是numberOne的倍数,因此我希望将numberTwo舍入到 6。 我该怎么做? 谢谢 回答1 您可以使用模运算符% : numberTwo % numberOne == 0 模求 2 个数字之间整数除法的余数,例如: 20 / 3 = 6 20 % 3 = 20 - 6 * 3 = 2 20/3 的结果是 6.666667 - 被除数 (20) 减去除数乘以除数 (3 * 6) 的整数部分是模 (20 - 6 * 3) ,在这种情况下等于 2。 如果模数为零,则被除数是除数的倍数 有关此维基百科页面上的模数的更多信息。 回答2 1)如果要检查或整数除以另一个整数: 斯威夫特 5 if numberOne.isMultiple(of: numberTwo) { ... } Swift 4 或更少 if numberOne % numberTwo == 0 { ... } 2)四舍五入到最接近的倍数的函数: func roundToClosestMultipleNumber(_ numberOne: Int, _ numberTwo: Int) -> Int { var result

2022-07-11 09:40:20    分类:技术分享    ios   swift   integer   division

Display Section Header UICollectionReusableView

问题 我正在开发 iOS 应用程序,但在使用 UICollectionView 单元格时遇到了几个问题。 这次想问一下UICollectionView(UICollectionReusableView)的section header如何显示 我已经实现了如下功能: public func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { switch kind { case UICollectionElementKindSectionHeader: let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "cellHeader", for: indexPath as IndexPath) var labelHeader = headerView.viewWithTag(2) as! UILabel if indexPath.section == 0 {

2022-05-17 05:26:07    分类:技术分享    ios   swift   xcode   uicollectionview   uicollectionreusableview

Get and Set Array in Swift Class

问题 我正在构建一个 IOS 应用程序,不知何故我必须在 swift 类中进行聚合,但是每次我想获取数据时,它总是返回错误。 似乎我的数据总是返回 nil 结果。 我想在创建对象的视图控制器类中推送 DoctorList 成员对象(计划),并且我还调用了 init() 函数。 但是,但是,当我推送(或调用)DoctorList 类的 init 函数并传递 ScheduleList 数组时,医生列表类中计划成员的内容将始终为空。 因此,当我尝试获取时间表时,它将返回 nil 结果。 每个人都可以告诉我我做错了什么,因为我已经更改了代码,但它仍然给出 nil 结果。 我有两个这样的课 class DoctorList: NSObject { var DoctorID: String? var DoctorName: String? var SpecialtyID: String? var SpecialtyName: String? var ImageURL: String? var Schedule: [ScheduleList]? init(_ DoctorID:String, _ DoctorName:String, _ SpecialtyID:String, _ SpecialtyName:String, _ ImageUrl:String, _ Schedule

2022-05-17 05:26:03    分类:技术分享    swift   class   oop

Reading a Variable that Exists in a Delegate Function

问题 我有一个委托,它修改了一个名为tagToIndex的变量,我试图从委托中返回修改后的变量。 tagToIndex在类的前面定义,但它不包含我需要的信息。 我的问题是,有没有办法读取变量tagToIndex ,因为它存在于willPressItemAt函数中? 截至目前,我无法在函数之外读取变量。 显然我不能在willPressItemAt上使用return命令,因为这需要我输入我不能做的参数。 此外,我尝试使用委托,但并没有真正解决问题。 class MyCell: UITableViewCell, YSSegmentedControlDelegate { var tagToIndex = [0:0,1:0,2:0,3:0,4:0,5:0] let actionButton = YSSegmentedControl( frame: CGRect.zero, titles: [ "Yes", "No" ]) } func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) { tagToIndex[actionButton.tag] = index print(tagToIndex) } func segmentedControl(_

2022-05-17 05:20:22    分类:技术分享    ios   swift   delegates

Firebase queryEqual(toValue:

问题 我正在尝试快速使用 queryEqual(toValue:。我遇到的问题是我得到了空值。 我的数据看起来像这样 "time" : { "149791341619654" : { "URL_ID" : "02D03DA8-A652-4EFA-946F-1F0F2A963449", "UUID" : "F496B98E-3B4E-4602-B06D-C09B7F42DCB5", "date" : 1.497913416196546E9, "huer" : 0, "latitude" : 32.87926715336076, "longitude" : -117.2139702738423, "type_" : "Image", "uid" : "BjN8usKaW7NhqD2DxPPqAkjhnSx2" }, "149791381894099" : { "URL_ID" : "AB8D20E9-D1EB-4FD0-B0A8-CE755D1D8B91", "UUID" : "F534E1FC-DC55-4AFB-847D-64B614EF7137", "date" : 1.497913818940991E9, "huer" : 0, "latitude" : 32.87926715336076, "longitude" : -117.2139702738423, "type_"

2022-05-17 05:13:03    分类:技术分享    ios   swift   firebase   firebase-realtime-database

How to modify inputKeys for a custom CIFilter?

问题 我正在尝试创建一个自定义 CIFilter。 到目前为止,这个滤镜只是使图像变亮,这并不是我真正想要的,但我正在这样做,看看我是否能让它工作。 尽管过滤器使用 inputBlurRadius 的设定值,但我不知道如何更改它以便用户可以更改该值。 这是自定义过滤器。 import Foundation import UIKit public class CustomFilter: CIFilter { var inputImage: CIImage? private var kernel: CIColorKernel! var inputBrightness: CGFloat = 0.4 override public var outputImage: CIImage! { guard let inputImage = inputImage else { return nil } let extent = inputImage.extent let blur = createCustomKernel4().apply( withExtent: inputImage.extent, roiCallback: { (index, rect) in return rect }, arguments: [inputImage, inputBrightness as AnyObject]

2022-05-17 04:30:04    分类:技术分享    swift

is it possible to get the index (String.Index) value from the cursor position of a UITextView element in Swift?

问题 回答1 您可以获取从文档开头到所选范围开头的选定范围偏移量,并使用该偏移量获取字符串索引,如下所示: extension UITextView { var cursorOffset: Int? { guard let range = selectedTextRange else { return nil } return offset(from: beginningOfDocument, to: range.start) } var cursorIndex: String.Index? { guard let location = cursorOffset else { return nil } return Range(.init(location: location, length: 0), in: text)?.lowerBound } var cursorDistance: Int? { guard let cursorIndex = cursorIndex else { return nil } return text.distance(from: text.startIndex, to: cursorIndex) } } class ViewController: UIViewController, UITextViewDelegate { @IBOutlet

2022-05-17 04:04:03    分类:技术分享    ios   swift   xcode

PhotoPicker discovery error: Error Domain=PlugInKit Code=13

问题 想要改进这篇文章? 提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。 没有足够细节的答案可能会被编辑或删除。 我正在尝试在 UIImageView 中显示照片库中的图像 完整的错误是: 2017-06-09 21:55:59.063307+0200 firstapp2.0[12873:1120778] PhotoPicker 发现错误:错误域=PlugInKit 代码=13“查询已取消”用户信息={NSLocalizedDescription=查询已取消} 我的代码包括在下面: import UIKit class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate{ @IBOutlet weak var pic: UIImageView! @IBOutlet weak var text: UILabel! var chosenImage : UIImage! override func viewDidLoad() { super.viewDidLoad() pic.isUserInteractionEnabled = true; } override func didReceiveMemoryWarning() {

2022-05-17 03:45:06    分类:技术分享    swift   uiimage   ios11