1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

iOSのUIコンポーネントであるUIProgressViewを使用したときに、1%に満たない小さい値でも1%表示でも同様の進捗率で表示された。。

と思ったら、1%-3%も全く同じ進捗率でUI上は表示されてしまうので、、これは仕様なのかなんなのか。。

詳細な原因は結局つかめなかったが、
実験結果と考察を以下に記載していく。
※Android側にも似たようなUIコンポーネントはあるが、こちらはかなり正確にUI上進捗率を表示してくれるが、iOS側はどうもクセがあるようだ。。。

環境

 Mac OS:Sequoia 15.2
 iOS:シミュレータ iPhone 16 Pro (iOS18.2)
 UIコンポーネント:UIProgressView

 ※UIKitで今回は実験したが、おそらくSwiftUIでも同じ結果になりそうだがどうだろうかね。。

公式Doc

setProgressメソッドの説明文

The current progress is represented by a floating-point value between 0.0 and 1.0, inclusive, where 1.0 indicates the completion of the task. The default value is 0.0. Values less than 0.0 and greater than 1.0 are pinned to those limits.

実験内容

 5つのProgressViewを縦に並べて、非常に小さい値をsetProgressメソッドに指定してみた。

動かした結果

0.1%-1%

・コード
スクリーンショット 2025-01-11 19.48.14.png

・結果:全部1%と同じ進捗率で表示される
スクリーンショット 2025-01-11 20.04.35.png

1%-5%

・コード
スクリーンショット 2025-01-11 19.50.08.png

・結果:1%-3%は同じ進捗率表示だが、、4%と5%は少し進んでいるように見える(何で???)
スクリーンショット 2025-01-11 20.14.04.png

1%, 5%, 10%, 20%, 30%

・コード
スクリーンショット 2025-01-11 19.42.48.png

・結果:すべて異なる見た目で、正しい表示のように見える
スクリーンショット 2025-01-11 20.15.15.png

まとめ

人間の目で0.01(1%)と0.02(2%)のような小さな違いを識別するのは非常に困難な可能性はある。

そのため、iOS側でシステムは微小な変化をすべて表示するのではなく、一定の閾値を設けて表示を更新していそう、ということが言えるのでは?この結果を見ると。

つまり実験結果から言えることは、
標準のUIコンポーネントであるUIProgressViewを使用して、細かい進捗率も含めて正確に表現することにはあまり向いていない
ということが言えるのかも。。
公式Documentには全くこれらのことは記載されていないため、あくまで結果からの推測になる。

※Stack Overflowとかこの手の記事とかありそうだが、検索しても見つからず。

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?