前提・実現したいこと
swiftを用いて、iPhoneの写真アプリを作成してまして、写真を開いて左右にスワイプすることで前後の写真をみれる機能を実装しようとしております。
その中で、画像をズームしている場合は、scrollViewのページ移動ができないようにし、画像がズームされていない場合のみscrollViewの前後のページに行けるようにしたいのですが、このようにscrollViewにて一定条件下でページングを止めることは可能でしょうか。
(scrollViewのsubviewにscrollViewを、その配下のimageViewを入れることで、各ページの画像表示・拡大・画像内の移動を実現しております。)
pageViewControllerなんかではdataSourceにnilを突っ込んだりするけど、scrollViewってdelegateあったっけ?
あったらnil突っ込んでみるとどうなりますか?
ズーム時にdelegateをnilにすると、contentSizeは変わらないため?、ページは変わらず移動できる一方で、delegateがnilになったことでズームアウトができなくなってしまいますね...
質問の答えではなく私の感想ですが、複数の写真をUIScrollViewで扱うとメモリがすぐ足りなくなると思います。縮小して表示するのであれば数枚は並べられると思いますが、ズーム機能を入れるならある程度の画素数にして表示したいでしょうし。
また、画像をズームしている場合でもページ移動できる仕様の方が一般的ではあります。
あくまでも私の感想ですので無視しちゃってOKです汗
アドバイスありがとうございます!
一般的に「アルバム内の複数の画像を、拡大表示された画像をスワイプしていくことで確認していける」ような機能を実装する場合は、UIScrollViewを用いずにどのように実装するものなのでしょうか?
参考までにお伺いできますと大変助かります...!
普通はUIPageViewControllerを使います。これは UITableViewや UICollectionViewと同様にViewをリサイクルしてメモリを節約する仕組みになっています。
前後2枚と合わせて合計3枚の画像しかメモリに置かないので画像がたくさんあっても大丈夫です。
UIScrollViewだと条件によっては 5枚程度でもクラッシュするかと思います。
そうなのですね、ありがとうございます!
回答1件
あなたの回答
tips
プレビュー