Я делаю приложение для tvOS. У меня есть ячейка представления коллекции, в которой есть UIImageView. Я отмечаю «Настроить изображение при фокусировке» в построителе интерфейса, поэтому я могу использовать предоставленный системой эффект фокусировки для изображения. Проблема в том, что я также устанавливаю границу для изображения. Граница не масштабируется вместе с изображением, когда представление получает фокус и изображение увеличивается. Любые идеи, как я могу обновить размеры границы, когда вид сфокусирован?
Граница изображения, сфокусированного на AppleTV, не масштабируется
Ответы (1)
Я думаю, вы должны поместить свой imageView в объект UIView, а затем указать границу этого представления. после этого вы должны переопределить метод "didUpdateFocus" и сделать анимацию по своему усмотрению. см. В моем случае я поместил imageView в объект «viewBg» и дал анимацию этому объекту.
В вашем классе:
func viewAnimation(view:UIView , isNormal:Bool)
{
UIView.animate(withDuration: 0.5, animations: { () -> Void in
if isNormal{
view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0);
}
else{
view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3);
}
})
{ (finished) -> Void in
}
}
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
if(context.previouslyFocusedView != nil)
{
if (context.previouslyFocusedView is testCell)
{
let cell:testCell = context.previouslyFocusedView as! testCell
self.viewAnimation(view: cell.viewBg, isNormal: true)
}
}
if(context.nextFocusedView != nil)
{
if (context.nextFocusedView is testCell)
{
let cell:testCell = context.nextFocusedView as! testCell
self.viewAnimation(view: cell.viewBg, isNormal: false)
}
}
}
В вашем методе CollectionViewCell:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell:testCell = collectionView.dequeueReusableCell(withReuseIdentifier: "testCell", for: indexPath) as! testCell
cell.imgIcon.image = UIImage(named:arrayIconImages.object(at: indexPath.row) as! String)
cell.viewBg.layer.borderColor = UIColor.black.cgColor
cell.viewBg.layer.borderWidth = 10.00
return cell
}
Таким образом, вы можете дать анимацию с рамкой при просмотре изображения.
person
vikas prajapati
schedule
26.12.2016