【Swift】xibに配置したUIImageViewのtintColorが反映されないバグの解決方法

どうも。Reoです。

とりあえず先にサクッと表題の件を解決して行きましょう。

 

発生しているバグ

Xcode(10.3で確認済み)のバグと思われます。

まず、Assets.xcassets 内に用意したImageの renderingMode を template にします。

Render As を Template Imageにする

 

この状態で、IB上のViewにUIImageViewを設置して、ImageとTintを設定します。

IB上では色が反映される。

 

この状態でビルドをすると、設定したTintColorが反映されず、オリジナルの色で表示されてしまいます。

色が反映されていない…

 

解決方法

みんな大好きstack overflowで見つけました。
Modify UIImage renderingMode from a storyboard/xib file


import UIKit

// fixing Bug in XCode
// http://openradar.appspot.com/18448072
extension UIImageView {
    override open func awakeFromNib() {
        super.awakeFromNib()
        self.tintColorDidChange()
    }
}

Modify UIImage renderingMode from a storyboard/xib fileから引用。

質問内のベストアンサーになっていないので見つけづらいですが、こちらの方法で解決しました。

 

 

個人的なお話。

今回は、OKAIMO 制作時に出会ったバグの一つを解決したお話でした。

OKAIMO はローカライズを終え、今はその次のバージョンの審査待ちをしています。この審査待ちバージョンでは、広告の追加を行いました。

というのも、同じ個人開発者の友人に触発されて、あー広告ってちゃんと出してユーザーがいればある程度は稼げるんだなと思い、自分もちゃんと出そうと思ったからです。

私のポリシー的には、買い物中にランダムで急に全面広告が出てくるとか、明らかに使いづらくなることはしたくないんですよね。それで、今回は一定以上のラベルを作るにはリワードとして新しいラベルをあげるという仕組みにしてみました。

この方法がうまく行きそうだったら、Robinの方にも新規アルバム作成時に同様の動画リワード広告を追加しようかなと思っています。

 

ちゃんと個人で稼ぐ力を持ちたいと思って、とりあえず色々試してみようと思います。

これはアプリだけでなくこのブログとかもそうで、記事を出せば出すほどインプレッションは増えるはずなのだから、そういうこともちゃんとやっていこうというお気持ちです。

ブログも最近では、しっかりとした記事を書かないとっていう気持ちになってしまって、書くことにハードルが上がってしまってたんですけど、小さいことでも毎日コツコツ書いていこうと思います。

 

お仕事はないけど、その分個人の方のやる気はモリモリなので頑張っていきます!

ではまた明日!

Swift
コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS
more