69155


UIScrollView を使用すると、スクロール時のみ scrollbar(scrollIndicator)が表示されます。  
しかし、ユーザにスクロールが可能であることを示すためにも、スクロール時だけでなく常時表示したいと考えています。いろいろ調べてはいるのですが解決方法が見つかりません。そもそも可能かどうかもわかっていません。  
ご存じの方いらっしゃいましたらよろしくお願いいたします。


CC BY-SA 4.0
2020-07-31T09:19:04.993
69142
2020-08-01T05:21:38.677
35027
question
swift ios
scrollbarを常に表示したい


簡単な方法はありません。標準でスクロールインジケータを常に表示するような設定は用意されていません。

画面がスクロールできることを示す標準で提供されている方法として、`flashScrollIndicators()`をスクロールビューが表示された際に呼び出す、というものがあります。

このメソッドを呼ぶことでスクロールインジケータが少しの間表示されます。スクロールビューが表示された際にこのメソッドを呼んでスクロールインジケータを見せることで画面がスクロール可能であることを知らせます。

<https://developer.apple.com/documentation/uikit/uiscrollview/1619435-flashscrollindicators>

どうしてもスクロールインジケータを常に表示したままにしておきたい場合、２つの方法があります。

１つは標準のスクロールインジケータを使わずに自分で実装したものを表示することです。

スクロールビューの全体のスクロールエリアの高さとスクロール位置からインジケータの位置と長さを計算してスクロールビューの上に表示すればいいだけなのでそれほど実装は難しくありません。

もう一つの方法は標準で表示されるスクロールインジケータもビューの一種なので、スクロールビューのサブビューを辿ってインジケータのビューを取得して、消えないようにビューのプロパティを変更する、という方法です。

どちらも標準の方法から外れているのでオススメはしませんが、手段としてはこのようになると思います。


CC BY-SA 4.0
2020-08-01T05:21:38.677
69155
2020-08-01T05:21:38.677
5519
69142
answer