2015-11-18 3 views
0

У меня есть простой образ, который добавлен в пользовательский 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 
} 

Но значок не отображается.

  1. Если я закомментируйте первоначальный likeIcon.alpha = 0.0 затем значок виден выбран или не выбран, так что там
  2. toggleLikeButtonAnimated определенно называется
  3. Рама правильный кадр

Единственное Я могу думать, так как это действительно странно, это то, что что-то с движком фокуса мешает изменению альфы.

У меня есть этот код в ячейке прямо сейчас:

// 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 одушевляет в том, когда клетка сосредоточенная и, когда сфокусирована. Но это не то, что я хочу, и кажется, что анимация движка фокуса препятствует изменению моей альфы при выборе.

Любые идеи о том, как исправить?

ответ

0

По вашему описанию вы хотите, чтобы изображениеView было скрыто изначально, но затем видно, когда щелкнули UICollectionViewCell, но он не работает. Когда вы устанавливаете UICollectionViewDelegate, вы должны вызвать функцию reloadData, как и UITableView. Возможно, вы можете попробовать использовать это, когда вы нажмете элемент cell.Solve.

+0

Мне не нужно перезагружать данные, чтобы изменить внешний вид ячейки. Кажется, что API-интерфейс фокуса мешает обновлению пользовательского интерфейса ячейки. – Ramsel

Смежные вопросы