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

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

Xcode

OSSのようなFramework ProjectをPlaygroundで動作確認する方法

前説 OSS内にPlaygroundが含まれている場合、そのPlaygroundを弄って動作を確認することは容易です。しかし、Playgroundは、含まれていないけどPlayground上で動作を軽く確認したい! 軽く確認するためにTest Project作ってPodsやCarthageでOSS引っ張ってく…

R.swiftとWARNで競合したので解消した

WARNの説明 Obj-C時代は、#warningを書いて意図的に警告を表示し、後から対応する等のメモがわりに使用していた。(他にそういう人は多いはず) で、これがSwiftになると使えないので、// WARN:を書いたら同じように警告を表示するようにRun Scriptを入れるわ…

didSetの挙動

didSetの挙動 Swiftでは、Propertyに対してdidSetで処理を書いてあげることが多く、この時呼ばれるの?呼ばれないの?と疑問に思うことがしばしばあって、テストしていたのでまとめておく。 値型と参照型で異なる点は言わずもがな気をつけなければいけない。…

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ボタンと処理を紐づけて…

UIBarButtonItemで画像の見たを変えずに使用するやり方

UIBarButtonItem UIBarButtonItemは、UINavigationControllerとかと併せてよく使うButtonですが、そのまま使用すると下記のように透過じゃない部分は単色でTint Colorによって塗りつぶされます。 この画像を使用すると… こうなる これを画像を加工せずそのま…

AutoLayoutでmarginを画面比率によって変更したい時の対処

経緯 ふと前にも調べた気がするが、覚えていないなら覚えるまで同じ記事であろうか書くしかない。 AutoLayoutで制約をつけていると、固定のものは問題ないが、画面サイズによって可変にしたい場合、Viewのwidthやheightであれば、superviewとequal widthやeq…

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

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

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

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

XcodeのBuild Settingsで設定を忘れるのでメモる

前置き XcodeのBuild Settingsって色々設定があり、オプションをつけることで便利にできたりするのだけど、チェックボックスや選択形式じゃない部分も多くてつい「あの設定つけたいけど、何したらいいんだっけ?」って思うことがある。年かな〜 なので、一々…

Xcodeでファイル配置を変更した際に出るWarningの対処方法

Missing file (〜 is missing from working copy) gitで該当ファイルをコミットする Dependency Analysis Warning XcodeのUtilities(右カラム)>File inspectorのTarget Membershipからチェックを外す or ProjectのTargets>Build Phases>Copy Bundle Resource…

Library not loadedでCrashした時に行なった対処

Library not loadedでクラッシュとの遭遇 アプリを作っている時は、問題なく実機で実行できていたが、 iTunes ConnectにバイナリのUploadが終わって、メタデータ用のスクリーンショットを撮ろうとシミュレータで実行した際に下記内容のクラッシュに初遭遇し…

Frameworkに含まれるXIBやNIBファイルを使用しているのに表示されず"Unknown class HogeClass in Interface Builder file."と出る時の対処方法

3rd Party提供Frameworkに含まれるXIB、NIB 3rd Partyが提供しているFrameworkには、稀にXIBやNIBが含まれており、それを画面上に配置して使うことがある。 この時、Xcodeプロジェクトに取り込み、StoryboardでCustomClassとして適用して使うこともあるだろ…

フリーのApple IDアカウントを使ってXcodeからアプリを実機転送できることで、App ID登録時にエラーを出してしまう可能性の問題

要約 Xcode7からApple IDアカウントがあれば、有料の開発者登録を行わずとも実機にアプリを転送できるようになった その結果App IDを無作為に作成することができ、アカウントが違っても同じApp IDを作成することはできないので、何故かApp IDの登録でエラー…

Scheme呼び出しで://の//をリンク形式でなら省略することができる

スマホアプリはでよく使う機能にSchemeがあると思う。jp.co.hoge://paramのような形式でアプリにあらかじめ登録しておくと、 スマホのブラウザから上記アドレスを呼び出すことでアプリを起動させ、 パラメーターによって処理を行わせる。このSchemeで//を省…

AutolayoutのconstraintもIBOutletでソースに関連付けれる

StoryboardからUIViewやUIButtonをcontrol+ドラッグ操作でソースに関連づけて、UIをStoryboard、内部処理や動的変更をソースで行える。これがconstraintも同じことできて、状況に応じて動的変更ができると今さならがら知った。Autolayoutもちゃんと覚えれば…

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…

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…