-1
オープンクラスの別のView Controllerで関数を呼び出そうとしています。基本的に私のビューにサブビューが追加されます。私はこれまで関数を呼び出すのに失敗しています。オープンクラスの別のVCから関数を呼び出す - Swift
open class ItemAnnotationView: MKAnnotationView {
override open func setSelected(_ selected: Bool, animated: Bool) {
if selected {
UIView.animate(withDuration: 0.1, animations: {
print("show large icon")
// smaller size
self.mediumIconView.transform = CGAffineTransform(scaleX: 0.2, y: 0.2)
self.mediumIconView.alpha = 0
}, completion: { (animating) in
// Start showing large icon
self.largeIconView.alpha = 0.2
// double size + show large icon
UIView.animate(withDuration: 0.2, animations: {
// double size
self.largeIconView.transform = CGAffineTransform(scaleX: CGFloat(self.ENLARGE_MAX_SCALE), y: CGFloat(self.ENLARGE_MAX_SCALE))
self.largeIconView.frame.origin.y = (1 - self.ENLARGE_MAX_SCALE) * self.MEDIUM_ICON_WIDTH - self.MEDIUM_ICON_WIDTH/2 + 6
// completely show large icon
self.largeIconView.alpha = 1.0;
}, completion: { (animating) in
// a little smaller size
UIView.animate(withDuration: 0.1, animations: {
// a little smaller size
self.largeIconView.transform = CGAffineTransform(scaleX: CGFloat(self.ENLARGE_FINAL_SCALE), y: CGFloat(self.ENLARGE_FINAL_SCALE))
self.largeIconView.frame.origin.y = (1 - self.ENLARGE_FINAL_SCALE) * self.MEDIUM_ICON_WIDTH - self.MEDIUM_ICON_WIDTH/2 + 6
}, completion: { (animating) in
})
})
})
} else {
// normal size + hide large icon
UIView.animate(withDuration: 0.2, animations: {
print("show small icon")
// normal size
self.largeIconView.transform = CGAffineTransform(scaleX: 1, y: 1)
// hide large icon
self.largeIconView.alpha = 0.0;
self.largeIconView.frame.origin.y = -self.MEDIUM_ICON_WIDTH/2
}, completion: { (animating) in
// show medium/small icon
self.mediumIconView.transform = CGAffineTransform(scaleX: 1, y: 1)
self.mediumIconView.alpha = 1
})
}
}
}「ショー大きいアイコン」を印刷するとき、私は、関数を呼び出す必要が
:ここに私のオープンクラスのコードです。お使いのコントローラで
// Start showing large icon
self.largeIconView.alpha = 0.2
//call completion
self.completionHandler?()
:
typealias VoidBlock =() -> Void
open class ItemAnnotationView: MKAnnotationView {
var completionHandler: VoidBlock?
}
と完了あなたのアイコンが大きくなり、そのコール:あなたはオープンクラスに完了ブロックを追加することができます