У меня есть простой образ, который добавлен в пользовательский UICollectionViewCell. Я инициализировать его, когда я объявляю его:Невозможно изменить альфа субвью, когда ячейка сфокусирована
let likeIcon = UIImageView()
И тогда я установить свойство в моем классе инициализатор:
likeIcon.image = UIImage(named: "heart_empty")!
likeIcon.alpha = 0.0
addSubview(likeIcon)
Ничего слишком сумасшедшего. Я хочу, чтобы изображениеView было скрыто изначально, но затем видно, когда камера нажата.
У меня есть простой метод, который я называю, когда выбрана ячейка (это еще не анимированный):
func toggleLikeButtonAnimated() {
likeIcon.frame = likeIconFrame()
likeIcon.alpha = 1.0
}
Но значок не отображается.
- Если я закомментируйте первоначальный
likeIcon.alpha = 0.0
затем значок виден выбран или не выбран, так что там toggleLikeButtonAnimated
определенно называется- Рама правильный кадр
Единственное Я могу думать, так как это действительно странно, это то, что что-то с движком фокуса мешает изменению альфы.
У меня есть этот код в ячейке прямо сейчас:
// MARK: -- Focus
override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
super.didUpdateFocusInContext(context, withAnimationCoordinator: coordinator)
coordinator.addCoordinatedAnimations({() -> Void in
if self.focused {
self.focusItem()
} else {
self.unfocusItem()
}
}) {() -> Void in
}
}
func focusItem() {
self.overlay.alpha = 0.0
}
func unfocusItem() {
self.overlay.alpha = 0.6
}
overlay
находится ниже значок, чтобы она не должна мешать его видимость. Так что я попытался это:
// MARK: -- Focus
override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
super.didUpdateFocusInContext(context, withAnimationCoordinator: coordinator)
coordinator.addCoordinatedAnimations({() -> Void in
if self.focused {
self.focusItem()
} else {
self.unfocusItem()
}
}) {() -> Void in
}
}
func focusItem() {
self.overlay.alpha = 0.0
self.likeIcon.alpha = 1.0
}
func unfocusItem() {
self.overlay.alpha = 0.6
self.likeIcon.alpha = 0.0
}
likeIcon
одушевляет в том, когда клетка сосредоточенная и, когда сфокусирована. Но это не то, что я хочу, и кажется, что анимация движка фокуса препятствует изменению моей альфы при выборе.
Любые идеи о том, как исправить?
Мне не нужно перезагружать данные, чтобы изменить внешний вид ячейки. Кажется, что API-интерфейс фокуса мешает обновлению пользовательского интерфейса ячейки. – Ramsel