【发布时间】:2016-10-25 11:52:08
【问题描述】:
我正在使用这个模块来显示图像: https://github.com/huynguyencong/ImageScrollView/blob/master/Sources/ImageScrollView.swift
我已使用 CocoaPods 将它添加到我的项目中,并且我想更改 var "maxScaleFromMinScale" 的值。我就是想不通。
首先我试图覆盖 var 这是不可能的。
然后我尝试通过复制和覆盖由模块创建者覆盖的相同初始化器来覆盖初始化器。
override init(frame: CGRect) {
super.init(frame: frame)
}
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
这不起作用,它在顶部初始化程序上给我一个错误,说我没有覆盖指定的初始化程序。感觉就像我无法覆盖它,因为它不像第二个那样公开。对吗?
我尝试的最后一件事是进行扩展:
extension ImageScrollView {
public func setMaxScale(scale: CGFloat) {
maxScaleFromMinScale = scale
}
}
这也不起作用,maxScaleFromMinScale 是一个未解析的标识符。这似乎也是因为它是一个内部变量,我无权访问它(另一个模块)。这是否意味着我唯一的选择是复制整个文件并修改源。希望有一个最小而优雅的解决方案。
如果是这样,为什么你可以覆盖内置的 UIKit 元素,而不是我使用 CocoaPods 下载的这个元素。
【问题讨论】:
标签: swift module overriding var initializer