面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

iOS

UICollectionViewを使った実装でIn-call Status Bar時、Cellのサイズと座標がおかしくなった時の処置

Simulatorで確認できるIn-call Status Bar時のレイアウト Simulatorで⌘ + Yを押すことで、In-call Status Barの状態にできる この時、Status Barの高さが増すため、考慮していないレイアウトの時に崩れて表示される。 UICollectionViewのcellが崩れた時の処…

UIButtonが青色一色のベタで表示された時の対処

初歩的ミス IBOutletで紐づけていたUIButtonにコードでimageをセットしてあげるも、青色一色でベタ塗りされた表示になっていた。 理由としては、UIButtonのTypeがSystemだったために画像をセットしても青色で表示されていた。 Customに変えて正常に表示され…

URLComponentsは、`+`をPercent Encodingしてくれない

経緯 APIを叩く際にランダムに生成しな内容をBASE64化してQueryにつけて送信しようとしていたが、5割ぐらいのエラーになっていた。 調査した結果、+がPercent Encodingされていないためだったが、なぜこんなことが起きたのか…。 便利なURLComponentsの罠 qii…

WebView実装してリロードしまくったら出るNSURLErrorDomain エラー -999

前説 業務が忙しかったこともあり、色々ネタはありつつも書いてなかったので、落ち着いてきた今日あたりから徐々にまた書いていく。軽めにね。 NSURLErrorDomain エラー -999 WKWebViewを実装して特に制御せず、back, forward, reloadボタンと処理を紐づけて…

NavigationItemのLeftBarButtonItemsにitemを入れるとBackボタンが表示されなくなるやつの対処

経緯 割と当たり前だったりすることでも、知らないことも多々あるので、今回そんな例として今更知った内容のメモとして記載 内容 UINavigationControllerから pushViewController(UIViewController, animated: Bool) で次のViewControllerに遷移するのは珍し…

iPhone Xで出来ないこと2点

iPhone Xを触ってて気づいたこと iPhone Xを私物として購入し、触ったりコードを動かしていて疑問に思ったことを調べた結果、以下の2つが判明 * network indicatorが表示されない * 逆さまの縦持ち(portrait upside down)が存在しない network indicatorが表…

Xib(Nib)上で設定したfontの種類やサイズが適用されなくて困った話

遭遇した問題 とあるプロジェクトでXib上に配置したUILabelに対して、Xib上からfontの種類とサイズを変更した。 しかし実機上で確認しても、そのfontの変更は適用されていなかった。 原因 何が問題だったかというと、application(_ : launchOptions: ) -> Bo…

iOS(Swift)から3ステップでMastodonに画像付き投稿を行う

まえがき 前回は、登録、ログイン、投稿の3ステップを記載 前回の延長線上で画像付きの投稿もやってみよと思い立つ 画像やmime/typeは固定で記述してるので適宜変更してください。 今回もmastdn.jpを使用しています。適宜変更してください。 タイトルのこと…

iOS(Swift)から3ステップでMastodonに投稿を行う

流行りのMastodonのiOSアプリがAmaroqというアプリしかないため、 作ってみようかなと思い立った。 Qiitaにも投稿済みその過程で必要なログインと投稿の処理を記載する。 正確には3ステップ必要。 全部POSTのみでいけるため、下記の処理を使用今回はmastdn.j…

ViewControllerのpresentedViewControllerを辿る際の落とし穴

iOSのプログラムを書いている際、最前面に表示されているViewControllerを取得したいと思うことがある。 この時、rootViewControllerからpresentedViewControllerがnilになるまで取得して、 最前面のViewControllerを求めることを少なからずやったことだと思…

UIImageViewを継承しているCustomViewはdrawRectを通らない

うっかり忘れるので書いておく。タイトル通り。 UIViewを継承しているUIImageViewなので、 LifecycleとしてdrawRectを通りそうなものの、 UIImageViewを継承しているCustomViewは通らないため 処理を書いても意味がない。 参考 stackoverflow.comqiita.com

UIImageのRenderingModeのサンプルコード

1枚の画像で色だけ変えて使いまわしたいと思ったものの、 色の数だけ画像を用意するのも大変だし、動的に色を変えるのも難しいと思い、 いい方法がないか調べたところ、UIImageにRenderingModeなるものが存在することを今更知った。今回下記画像を用意し、実…

ATS(App Transport Security)を"Xcode8 beta6"+"iOS10 beta6"でテストしてみた

夏期休暇でだらけている間にXcodeβ5、β6と出ていたので、生活を戻しつつ検証記事含めもろもろ書いていこうかなと。 とりあえずβ5やる意味がないので、β6をいつも通り検証してみました。 テスト方法 テスト方法は、プログラムの使い回しで基本今までを踏襲し…

ATS(App Transport Security)を"Xcode8 beta4"+"iOS10 beta4"でテストしてみた

いつも通りbeta4が出たので検証してみた。 テスト方法 テスト方法は、プログラムの使い回しで基本今までを踏襲していますが、下記赤字が変更点となります。 iOS10は、iOS10.0 beta4を使用 iOS9は、iOS9.3.3を使用 ATSは、最初Xcode7BuildのipaとiOS9の組み合…

ATS(App Transport Security)を"Xcode8 beta3"+"iOS10 beta3"でテストしてみた

今回は、beta3が出て早々記事にしてみた! どうせ結果は、beta2と変わらないんだろうなーと思って検証してみたが…前回のXcode8.0 beta2の追記からhttpによるLANへのアクセスも検証に加え始めた。 テスト方法 テスト方法は、プログラムの使い回しで基本今まで…

ATS(App Transport Security)を"Xcode8 beta2"+"iOS10 beta2"でテストしてみた(追記)

前回、"Xcode8 beta1"と"iOS10 beta1"でATSと新しいKeyNSAllowsArbitraryLoadsInWebContentの調査したが、想定と違う結果になり、バグだったのでは?という結論に至った。 beta2リリースから1週間経ってしまったが、beta2で改めて確認してみた。今回NSAllows…

ATS(App Transport Security)を"Xcode8 beta1"+"iOS10 beta1"でテストしてみた

developer.hatenastaff.com この記事に触発されたこと、愛用するKinoppyがiOS10βで一切通信が正常に行えなかったこと、そのあたりでATS(App Transport Security)の振る舞いが気になり実機でテストしてみた。気になったこととして Xcode7系でBuildされている…

UIView(とおまけでUIViewController)のLifecycle

UIViewControllerのLifecycleは馴染み深く、よく使うしわかりやすいので覚えているから困らないけど、たまにUIViewのLifecycleの知識が必要になるときがある。 名前と処理と呼ばれる順序が脳内で一致していないので、ひとまず順序だけでもまとめておこうと思…

iOS9系のiPadで不可解なフリーズ現象

iOS9系のiPadで不可解なフリーズ現象に遭遇し、原因はわからないものの解消することができたので、 今後同じことに遭遇した時のために、備忘録として記載。 最小限のテストプロジェクトで試してみたが、再現できなかった。 発生した条件 iOS9のiPad端末(ただ…

WWDC2016のページのまとめ(2/2)

1ページに収め切るのきつかったので、WWDC2016の情報を分割してまとめ。 基本自分の興味と関係がありそうなところを抽出。 WWDC2016 Video WWDC 2016 - Videos - Apple Developer macOS Sierra developer.apple.comdeveloper.apple.com developer.apple.comd…

WWDC2016のページのまとめ(1/2)

WWDC2016の発表から時間それなりに経ったし、いい加減情報に目を通しておきたいところ。 ざっと興味というか覚えておかなきゃなーと思ったのは、Notificationか。以下、自分用にWWDCのリンクまとめ macOS www.youtube.comwww.youtube.comwww.youtube.com iOS…

2017年01月でiOSアプリはhttps通信が必須に

半年後の2017年1月でhttps通信が必須になるそうで。 iOS側の設定自体は大したことない。 どちらかと言えば、サーバ側がTLSv1.2に対応したりしないといけないので大変。 Webが絡むiOSアプリは対応しなければいけない。既存のリリース済みアプリは対応しない場…

guard let で2つ以上の変数をまとめて処理する

Swift2からoptional型をunwrapを保証しつつnilでないことを確認するためにguard let構文が用意されるようになった。 非常に便利なので積極的に使われるけど、括弧やreturnが必要なのでいくつもguard letを使おうとするとかさばるとおもっていた。しかし、実…

Swift2で数字をenumに変換

Swift2でtagを設定したObjectからenumに変換する時に調べたので、備忘録として残す enumType(rawValue: numberType) ざっくり書けばこんなん。 // tagをenumに変換 guard let direction = Direction(rawValue: sender.tag) else { return }

CGFloatを使う時の注意点

Objective-CやSwiftを使ってiOSアプリを開発する時、小数点使用する型は8割CGFloatを使う。 このCGFloatを使う時に Use of undeclared type 'CGFloat': did you mean to use 'CGFloat'? というエラーが出たことがあった。 解決方法は単純に、UIKitをimportす…

presentedとpresentingの違い

たまにpresentedviewcontrollerとpresentingviewcontrollerの違いがわからなくなるのでメモA presentViewController B B presentViewController C となった時、画面手前から奥にかけてC > B > Aの階層になる。この時、Bから見て…、 - presentedviewcontrol…

iOS端末のタスクキルは電池を消耗するからしない方がいいとか

iOS端末で電池の消費を気にして、よくタスクを切ることあるけど、実はそれが逆に電池を消耗する結果になるという記事が最近あった。 しかも、Appleも認めてる。でも、タスクが大量にある状態もなんか嫌なんだよなー。 充電できる環境の時だけ、切るようにし…

UIColorの設定で色が正常に表示されなかった現象

ViewControllerのbackgroundColorに色設定しようとしたのに、何故か真っ暗になって困った話 viewWillAppear(_:)でUIColorでCGFloat(0xNN / 0xMM)みたいに指定して色設定しているのに、実際に表示せたら画面が黒一色だった。 print文で吐かせて数値みたら下記…

使いにくいメソッドの再定義

そのままだと使いにくい、使えないので拡張やオーバライドして使ってるメソッド ローカライズの文字列呼び出す時、"commnet"は基本空文字だし、呼び出しが長くなるのはよろしくないのでこんな感じで定義してる func EXLocalizeString(key: String) -> String…

Localizeで苦戦した備忘録

知人らと少人数チームでアプリの開発をしているのだけど、英語でしかリリース予定ないとは言え今後を見据えて勉強がてらLocalizeをやろうとしたら嵌った。色々やり方とか調べたり、過去関わったプロジェクトを思い出してこんなファイルがあって…とか試行錯誤…