読者です 読者をやめる 読者になる 読者になる

Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #280】テーブルビューをスクロールしたときにカクカクするのを無くすためにすること ~カラーブレンド(color blend)処理を無くす~

この記事を読んでわかること

  • テーブルビューをスクロールしたときにカクカクするのを無くすためにすること

テーブルビューをスクロールしたときにカクカクする原因は、
描画処理に重い処理(複数のことも)が入ることによって発生していることがあります。

今回は原因のひとつとなりうる「カラーブレンド処理」について書きます。

カラーブレンド処理とは何か?

Viewを(半)透明にすると、背後にあるViewの色との合成処理が行われます。
これがカラーブレンド処理です。
Viewが(半)透明でなければ、合成処理が行われないため処理が軽くなります。

カラーブレンド処理が発生しているか確認する

Xcodeに付属するInstrumentsというツールを使用します。
実機をつないでから、Xcodeの上部メニューの「Products」から「Profile」を選択すると起動します。

Core Animationを選択します。
f:id:fjswkun:20160814184557p:plain

右下のところに「Color Blended Layers」があるのでチェックを入れます。
f:id:fjswkun:20160814184605p:plain

繋いでいる実機の画面を見てみます。
f:id:fjswkun:20160814185003p:plain

画面で赤くなっている部分でカラーブレンド処理が発生しています。
これを出来るだけ少なくすることで処理が軽くなります。

カラーブレンド処理を無くすには

透明の処理をなくしていきます。
単純に背景色の透明をなくせばいいというわけではなく、
Viewの種類によって、対応が変わっていきます。

ここではUILabelで試します。
f:id:fjswkun:20160814185003p:plain

UILabelではデフォルトでalphaプロパティが1.0ですが
背景色がclear colorなので透明になっています。
そのため、カラーブレンド処理が発生しています。

まずは背景色を白にします。

しかし、カラーブレンド処理が発生したまま。 f:id:fjswkun:20160814185003p:plain

UILabelはサブビューをもっていて、 サブビューがUILabelの表示枠をはみ出していて、それが影響して、
カラーブレンド処理が残ったままになっていると推測しています。

これを解決するためにclipsToBoundsプロパティをtrueにしました。
するとカラーブレンド処理がなくなりました。
f:id:fjswkun:20160814194120p:plain

カラーブレンド処理が無くならないときには下記プロパティなども確認してみましょう。

  • Viewのopaqueプロパティがtrueになっているか
  • UIImageViewの場合、表示する画像自体に透明の設定がされていないか


参考情報

Swift

iOSアプリ開発未経験の人向け
・Swift初心者の人に評判が良いようですね


・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】


②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾


③中級者、上級者向け

詳解 Swift

詳解 Swift

詳解 Swift 改訂版

詳解 Swift 改訂版