2015-07-05 5 views
0

im с использованием CollectionView и жест Pinch, подключенный к CVCell. У меня есть изображение в ячейке и жест Пинч. Увеличение и уменьшение изображения. Моя проблема - «Жесткий жест» работает только для четных строк, а не для нечетных строк. Я имею в виду, что для первой ячейки я не могу масштабировать изображение, я могу увеличить изображение во второй ячейке и наклоняться к третьей ячейке и может для 4-й ячейки, и она продолжается так. Я не мог найти логического объяснения. Так что, возможно, вы можете увидеть, чего я пропустил. Спасибо, совет. Мой код здесь:CollectionViewCell не работает должным образом с жестом Pinch

`

@IBAction func handlePinch(recognizer : UIPinchGestureRecognizer) { 
    if let view = recognizer.view { 
     view.transform = CGAffineTransformScale(view.transform, 
      recognizer.scale, recognizer.scale) 
     recognizer.scale = 1 
    } 
} 

@IBOutlet weak var collectionView: UICollectionView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    var b = UIBarButtonItem(barButtonSystemItem: .Bookmarks, target: self, action: "barButton") 
    self.navigationItem.rightBarButtonItem = b 
    var ItemIndex = NSIndexPath(forItem: catchNumber, inSection: 0) 
    self.collectionView?.scrollToItemAtIndexPath(ItemIndex, atScrollPosition: UICollectionViewScrollPosition.CenteredHorizontally, animated: false) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 

func barButton(){ 
    let alert = UIAlertController(title: "Select an option", message: " ", preferredStyle: UIAlertControllerStyle.ActionSheet) 
    let shareButton = UIAlertAction(title: "Share", style: UIAlertActionStyle.Default) { (alert) -> Void in 
     let content = FBSDKSharePhotoContent() 
     let photo : FBSDKSharePhoto = FBSDKSharePhoto() 
     photo.image = self.image 
     photo.userGenerated = true 
     content.photos = [photo] 
     FBSDKMessageDialog.showWithContent(content, delegate:nil) 
    } 
    let saveButton = UIAlertAction(title: "Save", style: UIAlertActionStyle.Default) { (alert) -> Void in 
     UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil) 
    } 
    let deleteButton = UIAlertAction(title: "Delete", style: UIAlertActionStyle.Default) { (alert) -> Void in 
     var tmp = self.catchPictures[self.catchNumber].componentsSeparatedByString("_") 
     self.idDelete = tmp[1] 
     let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "/\(self.idDelete)", parameters: nil , HTTPMethod: "DELETE") 
     graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 
      if (error == nil){ 
       self.navigationController?.popViewControllerAnimated(true) 
      }else{ 
       let alertController = UIAlertController(title: "Delete Error", message: 
        "An error occured while deleting photo", preferredStyle: UIAlertControllerStyle.Alert) 
       alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default,handler: nil)) 

       self.presentViewController(alertController, animated: true, completion: nil) 
      } 

     }) 
    } 
    let cancelButton = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { (alert) -> Void in 
     println("Cancel Pressed") 
    } 
    alert.addAction(shareButton) 
    alert.addAction(saveButton) 
    alert.addAction(deleteButton) 
    alert.addAction(cancelButton) 
    self.presentViewController(alert, animated: true, completion: nil) 
} 

func collectionView(collectionView: UICollectionView, numberOfSectionInCollectionView section: Int) -> Int { 
    return 1 
} 

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return catchPictures.count 

} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    var cell = collectionView.dequeueReusableCellWithReuseIdentifier("PhotoCell", forIndexPath: indexPath) as! UICollectionViewCell 
    let a:UIImageView = cell.contentView.viewWithTag(1) as! UIImageView 
    dispatch_async(dispatch_get_main_queue(),{ 
     var urlString: NSString = self.catchPictures[indexPath.row] as NSString 
     var imgURL: NSURL = NSURL(string: urlString as String)! 
     var request: NSURLRequest = NSURLRequest(URL: imgURL) 
     var urlConnection: NSURLConnection = NSURLConnection(request: request, delegate: self)! 
     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in 
      if !(error != nil) { 
       var image = UIImage(data: data) 
       a.image = image 
       self.image = a.image 
      }}) 

     self.flowLayout.minimumInteritemSpacing = 0.0 
     self.flowLayout.minimumLineSpacing = 0.0 
     self.flowLayout.itemSize = CGSizeMake(self.view.frame.width, 350) 
     self.flowLayout.scrollDirection = UICollectionViewScrollDirection.Horizontal 
     self.collectionView.setCollectionViewLayout(self.flowLayout, animated: true) 
    }) 
    self.catchNumber = indexPath.row 
    return cell 
} 

} `

+0

Не могли бы вы опубликовать код ячейки коллекции CVCell – Carpsen90

+0

Нет, нет никаких специальных CVCell, это моя ошибка, что я написал CVCell в качестве краткого значения Colle ctionViewCell, который отображается в коде, в котором я не использовал какую-либо пользовательскую ячейку просмотра коллекции;) Извините за недоразумение – marmaralone

+0

Где код для добавления распознавателя пинча в представление коллекции? – Carpsen90

ответ

0

Нет нет нет пользовательских CVCell, это моя ошибка, что я написал CVCell как короткий смысл CollectionViewCell который виден в коде что я не использовал какую-либо пользовательскую ячейку просмотра коллекции;) Извините за недоразумение