Изображение выводится только на весь экран один раз - PullRequest
0 голосов
/ 24 июня 2018

Когда пользователь нажимает на изображение, которое отображается в FSPagerView, изображение переходит в полноэкранный режим, и это именно то, что мне нужно. Однако после повторного прикосновения к экрану и снятия полноэкранного изображения после повторного прикосновения к изображению оно не переходит в полноэкранный режим. Мне придется покинуть вид и вернуться на страницу, чтобы она стала полноэкранной. Почему изображение не переходит в полноэкранный режим более одного раза?

 public func numberOfItems(in pagerView: FSPagerView) -> Int {
    return imagesArray.count
}
public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
    let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
    cell.imageView?.loadImageUsingCacheWithUrlString(urlString: imagesArray[index])
    cell.imageView?.contentMode = .scaleAspectFill
    return cell
}

func pagerView(_ pagerView: FSPagerView, shouldSelectItemAt index: Int) -> Bool {
    return true 
}

func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
    let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
    cell.imageView?.loadImageUsingCacheWithUrlString(urlString: imagesArray[index])
    cell.imageView?.contentMode = .scaleAspectFill

    let imageView = cell.imageView as! UIImageView
    let newImageView = UIImageView(image: imageView.image)
    newImageView.frame = UIScreen.main.bounds
    newImageView.backgroundColor = .black
    newImageView.contentMode = .scaleAspectFit
    newImageView.isUserInteractionEnabled = true
    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
    newImageView.addGestureRecognizer(tap)
    self.view.addSubview(newImageView)
    self.navigationController?.isNavigationBarHidden = true
    self.tabBarController?.tabBar.isHidden = true
}

@objc func dismissFullscreenImage(sender: UITapGestureRecognizer) {
     sender.view?.removeFromSuperview()
    self.navigationController?.isNavigationBarHidden = false
    self.tabBarController?.tabBar.isHidden = false
 //   sender.view?.removeFromSuperview()
}

1 Ответ

0 голосов
/ 24 июня 2018

Добавьте tapGestureRecognizer к вашему изображению в cellForItemAt, и вы получите полноэкранное изображение:

public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
    let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
    cell.imageView?.loadImageUsingCacheWithUrlString(urlString: imagesArray[index])
    cell.imageView?.contentMode = .scaleAspectFill

    // Add a gesture recognizer the first time
    if cell.imageView?.gestureRecognizers?.count != 1 {
        let tap = UITapGestureRecognizer(target: self, action: #selector(imageTapped))
        cell.imageView?.isUserInteractionEnabled = true
        cell.imageView?.addGestureRecognizer(tap)
    }
    return cell
}

@objc func imageTapped(_ sender: UITapGestureRecognizer) {
    let imageView = sender.view as! UIImageView
    let newImageView = UIImageView(image: imageView.image)
    newImageView.frame = UIScreen.main.bounds
    newImageView.backgroundColor = .black
    newImageView.contentMode = .scaleAspectFit
    newImageView.isUserInteractionEnabled = true
    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
    newImageView.addGestureRecognizer(tap)
    self.view.addSubview(newImageView)
    self.navigationController?.isNavigationBarHidden = true
    self.tabBarController?.tabBar.isHidden = true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...