ここで私の考えが正しいかどうかはわかりませんが、私はiOSプロジェクト全体で同様のアニメーションを使用していますが、それを1ファイルに凝縮して、iOSビューでアニメーションを再利用する
簡単な例。私のアニメーションファイルでは、私は、スケールアニメーションを持って
Animations.swiftここで私は私のビューのフォルダに私の多くの迅速なファイルのいずれかを持っていると私はボタン
にそのアニメーションを追加したいと思いclass Animations {
class func scaleSmall(_ view: UIView) {
let scaleAnim = POPBasicAnimation(propertyNamed: kPOPLayerScaleXY)
scaleAnim?.toValue = NSValue(cgSize: CGSize(width: 0.9, height: 0.9))
view.layer.pop_add(scaleAnim, forKey: "scaleSmallAnim")
}
}
Button.swift
class Button: UIButton {
override func awakeFromNib() {
super.awakeFromNib()
self.addTarget(self, action: #selector(Animations.scaleSmall(_:)), for: .touchDown)
}
}
私は思っWOU ldはしかし、毎回私はそれを私は同じエラーを取得するこの方法を実行する追加のファイルからアニメーションを参照することができ
「#selector」の引数は、インスタンスメソッド「scaleSmall」のObjective-Cにさらされていないを指し、
この関数を間違って参照していますか?
これは正しいことです。 SwiftクラスはObj-Cと完全に互換性がなく、 'UIKit'(つまり' UIButton')はObj-Cの世界にあります。あなたの 'Animations'クラスによって' NSObject'から継承するか、あなたのメソッドを '@ objc'としてマークすることができます。 – Losiowaty
私にとって紛らわしいことは、ボタンクラスの中に#selector(Button.scaleSmall)でアクセスできるアニメーションがあれば、正しく動作するということです。まもなく私はそれをファイルから取り出します。私はそれを正しく得ることができません。 – user934902