2017-12-31 92 views
0

Ich versuche, eine IBAction hinzuzufügen, um ein Bild zu einer benutzerdefinierten Zellklasse Pinch und Zoom, aber Storyboard gibt einen Fehler, dass Aktionen nicht auf wiederholende Inhalte ausgerichtet werden können. Hier ist die individuelle Zellklasse:Zücken, um eine UIImageView in CollectionView Cell

class PhotoCell: UICollectionViewCell { 

// Outlets 
@IBOutlet weak var photoImgV: UIImageView! 
@IBOutlet weak var captionTV: UITextView! 
@IBOutlet weak var captionBtn: UIButton! 
@IBOutlet weak var captionStackView: UIStackView! 
@IBOutlet weak var likeCountLabel: UILabel! 
@IBOutlet weak var comntCountLabel: UILabel! 
@IBOutlet weak var pinch: UIPinchGestureRecognizer! 

// Actions 
@IBAction func pinch(sender:UIPinchGestureRecognizer) { 
    if sender.state == .began || sender.state == .changed { 
     let currentScale = self.photoImgV.frame.size.width/self.photoImgV.bounds.size.width 
     let newScale = currentScale*sender.scale 
     let transform = CGAffineTransform(scaleX: newScale, y: newScale) 
     self.photoImgV.transform = transform 
     sender.scale = 1 
    } 
} 

@IBAction func showCaption(){ 
    UIView.animate(withDuration: 0.5) { 
     if self.captionStackView.arrangedSubviews[1].isHidden { 
      self.captionStackView.arrangedSubviews[1].isHidden = false 
     }else{ 
      self.captionStackView.arrangedSubviews[1].isHidden = true 
     } 
    } 
} 

Es erlaubt mir eine IBAction auf eine Schaltfläche, um eine Verbindung zum Anzeigen/Verbergen der Beschriftung in derselben Zelle, also warum pinch ist nicht erlaubt? Wie würde ich ein Bild in einer Zelle kneifen und vergrößern?

+0

UICollectionViewCell? Sie müssen die Schließung oder was auch immer verwenden und lassen Sie den View-Controller damit umgehen. –

+0

danke für deine Hilfe, löste ich es, indem ich die Pinch-Geste in der Methode watchFromNib() erstellte und sie dort an das imageView anfügte. – fullMoon

Antwort

0

Ich löste es durch die Pinch-Geste aus Storyboard löschen und in der awakeFromNib() Methode zu erstellen:

override func awakeFromNib() { 
    super.awakeFromNib() 
    let pinch = UIPinchGestureRecognizer(target: self, action: #selector(self.pinch(sender:))) 
    photoImgV.addGestureRecognizer(pinch) 
} 

alles andere ist gleich.

Verwandte Themen