Не уверен, что мое мышление здесь верно, но у меня есть аналогичные анимации, которые я использую во всем моем проекте 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")
}
}
Вот у меня есть один из многих моих быстрых файлов в моей папке View, и я хотел бы добавить анимацию к кнопке
Button.swift
class Button: UIButton {
override func awakeFromNib() {
super.awakeFromNib()
self.addTarget(self, action: #selector(Animations.scaleSmall(_:)), for: .touchDown)
}
}
Я думал Wou л.д. иметь возможность ссылаться на анимацию из дополнительного файла, однако каждый раз, когда я делаю это таким образом, я получаю ту же ошибку
Аргумент «#selector» относится к методу экземпляра «scaleSmall», который не подвергается Objective-C
Я ссылаюсь на эту функцию неправильно?
Вы делаете это правильно. Его просто, что классы Swift не полностью совместимы с Obj-C, а 'UIKit' (т. Е.' UIButton') находится в мире Obj-C. Вы можете попробовать либо наследовать из 'NSObject' классом' Animations', либо пометить ваш метод как '@ objc'. – Losiowaty
Сложная вещь для меня - если у меня есть анимация внутри моего класса Button, я могу получить к ней доступ с #selector (Button.scaleSmall), и он работает правильно. Вскоре, когда я вытащил его из файла, я не могу правильно его исправить. – user934902