tomoyaonishiのブログ

iOSのことを中心に・・・その他もあるよ!

ライセンス情報を自動で設定に吐き出してくれるLicensePlistがすごい

LicensePlist LicensePlistというものを見つけました。CocoaPods、Carthage両対応でSettings.bundleを吐き出してくれて設定画面の自分のアプリ欄にライセンス表記をまとめて自動で表示できるという素晴らしいツールです。 この手のツールはどれもいまいちでC…

AtomからVisual Studio Codeに乗り換えた

Atomが起動しなかったり、終了しなかったりプロセスが不安定になることが多くイライラしたのでVisualStudioCodeに乗り換えました。 パフォーマンステストなどは以下の記事で丁寧にやってあるので安心して大丈夫かと思います。VisualStudioCodeすごい。 ryuta…

TwitterKit for iOSでログイン情報が保存されない

TwitterKit for iOSでログイン機能が正常に動作しないバグに直面しました。かなりの時間悩んでいたのですが、原因はLinked Frameworks and Binariesに追加するとき、TwitterKit.frameworkとTwitterCore.frameworkを追加していたことでした。 ドキュメント見…

AutoLayoutでViewの横幅に追従して表示するが画面からはみ出さないようにする

AutoLayoutであるViewの横にボタンをおいて、ボタンをViewの横幅に追従させるような画面があると思います。 たとえば、画像のようにタイトルの横にお気に入りボタンをおいて、タイトルの長さによってお気に入りボタンも右にずれていくような場面です。 この…

UILayoutGuideを使って意味のないUIViewを使わないようにする

UILayoutGuideとはAutoLayoutのための矩形領域表現クラスです。簡単に言うとUIViewからレンダリングとタッチイベント機能を取り去ったものです。 iOS11でSafeAreaが登場したのでview.safeAreaLayoutGuideが有名でしょうか、これがUILayoutGuideです。 実はiO…

AppStoreでリリース中のアプリのソースコードを公開してみた。

僕が開発したiOSアプリ「百選めぐり」のソースコードを公開しました。 試験的にnoteで有料販売にしたいと思います。ソースコード売買のプラットフォームもあるのですが、利用側がわざわざアカウント作るモチベがいまいちイメージできなかったのでnoteにして…

HighSierraにアップデートするとパーミッションがおかしくなったのでHomebrewを再インストールする

High SierraにアップデートしたらMacのパーミッションの周りが変わったみたいでhomebrewが使えなくなりました。 手動でパーミッション変えたり、解決策はあるようでしたが、めんどくさいのでHomebrew自体を再インストールすることにしました。 まずはアンイ…

UICollectionViewFlowLayoutAutomaticSizeを使用したCollectionViewの使い方

UICollectionViewFlowLayoutAutomaticSizeを使用したCollectionViewFlowLayoutでUICollectionViewを作ったことがなかったので勉強がてらまとめました。 だいたいありそうなUI構成は問題なくできそうです。UICollectionViewFlowLayoutAutomaticSizeを使いなが…

JavaScript, TypeScriptでシングルトン

iOSなどではよく(?最近はアンチパターンですかね)で使われるシングルトンをブラウザ環境上のJavaScriptでどう書くかわからなかったのでメモです。 コードはTypeScriptですが、こんな感じです。 定義側 interface StoreInterface { x: number; methodHoge: (…

UITableViewについて改めて考える

UITableViewについて改めて考えました。 iOSアプリとは切っても切れないUITableViewですが、リスト=UITableViewという考え方はどうかなとおもったのでメモがてら書きます。 結論から言うと再利用しないのであれば(もしくは再利用がごく少量)UIScrollViewの…

AutoLayoutでスワイプできるUITableViewCellのサンプルを更新しました。

セルをスワイプできるUITableViewのサンプルプロジェクトをずっと前に書いていましたがSwift1.2くらいだったので、Swift4に更新しました。 AutoLayoutを使っているのでConstraintを直接いじる形でもよかったのですが、一時的なViewの移動に最適なUIView.tran…

iPhoneX && UITabBarController && UIToolbar && SafeArea && Blur

iPhoneXでUITabBarControllerのタブをhiddenにしてもSafeAreaが伸びてくれずに、タブ上部に表示しているUIToolbarのblurがHomeIndicatorまで伸びてくれない場合に以下の対応で対症療法できることが判明しました。 UITabbarの上にUIToolbarの構成で、UIToolba…

FoursquareのAPIについて

FoursquareのAPIが無料枠アカウントでは、商用目的では使えないという旨の記載があった;; なんとかならないかと思い、直接Foursquareさんに問い合わせたところ、無料枠アカウントでも運用やソフトウェアの資金調達のための広告等はOKとの返事をもらいまし…

Homebrewを再インストール

El CapitanにアップデートしたらMacのパーミッションの周りが変わったみたいでhomebrewが使えなくなりました。 手動でパーミッション変えたり、解決策はあるようでしたが、めんどくさいのでHomebrew自体を再インストールすることにしました。 まずはアンイン…

CentOS7.1にてApacheとPythonでCGI

CentOS7.1にApacheを入れた状態でPythonをCGIとして動かしたかったのでその時の手順をメモしておきます。 IDCFクラウドの一番貧弱なサーバを借りてやっております。 Apache、ファイアウォールなどの設定はできていて、index.htmlは見れる状態からスタートで…

SwiftのAttributesをまとめた。

Swiftには定義や型に対して情報を補足するAttributesというものがあります。 Objective-CのNS_AVAILABLE_IOS(8_0)みたいなやつです。 Attributesのフォーマットは引数なしと引数ありの2通りです。 @attributename @attributename(arguments) @availability …

Swiftでxibで作成したカスタムビューのインスタンスを簡単に返す

Objective-Cではxibで作成したカスタムビューのインスタンスを以下のように生成して利用していました。 しかし、Swiftではinitのなかでselfに代入することはできないようです。(もし出来るならやり方教えてください。) なので以下のような書き方でxibから…

iOS8でコードでのAutoLayoutのやり方が地味に変わっていた件

あけましておめでとうございます。 仕事でAutoLayoutでUIを作っていてなんとなく-[UIView addConstraint], -[UIView addConstraints], -[UIView removeConstraint], -[UIView removeConstraints]の定義を見たところ、deprecatedになっていました。正式なdepr…

AutoLayoutでスワイプできるUITableViewCellを実装する

AutoLayoutを使ってセル上を左にスワイプすると、セルの右側がオープンするUITableViewCellを実装してみます。セルの削除のときによく出てくるあれを自分で実装する感じです。 AutoLayoutやstoryboardにある程度知識がある方を前提としていますので、適宜不…

UITableViewCellの高さを自動で計算する: UITableViewAutomaticDimension

UITableViewCellのUITableViewAutomaticDimensionを使えば、セルのそれぞれの高さを自動で計算させることができます。 optional func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat こいつとはおさらばで…

Xcode6でベクター画像を利用する。

Xcode6で密かにベクター画像が使えるようになっています。 これを使えば@1x, @2x, @3x画像を用意する煩わしさから解放されます! 使い方は非常に簡単です。 PDF画像を@1xのサイズで書きだす。 AssetCatalogをクリックする New Image Setで画像セットを追加す…

Swift: NSUserDefaultsに配列が保存できない

Swiftでプライベートで開発中のアプリでこんな出来事に遭遇しました。 let array = ["1", "2", "3", "4"] NSUserDefaults.standardUserDefaults().setObject(array, forKey: "key") NSUserDefaults.standardUserDefaults().synchronize() let array = NSUser…

SLRequestを用いたTwitterのin_reply_toツイートがうまくいかない

Twitterのリプライでin_reply_toを実装していて少しハマりました。 in_reply_to_status_idをパラメータに入れているのに、会話形式で表示されないという問題に遭遇しました。 SLRequestに渡すパラメータのNSDictionaryの中にin_reply_to_status_idをキーにNS…

SwiftからObjective-Cのenumを扱う時の注意事項2

注意事項というかObjective-CのenumをSwiftはどう解釈するかのメモ ObjC側でのenum typedef enum : NSUInteger { MyEnumValueA, MyEnumValueB, MyEnumValueC, } MyEnumValue; があったとする。この定数をSwift側からさわろうとするとほとんどの場合でエラー…

SwiftからObjective-Cのenumを扱う時の注意事項

Swiftを使って開発していても、OSSなどはObjective-Cで書かれたものを使うことはよくあります。 SwiftからObjective-Cのクラスなどを使うにはヘッダーファイルを用意するだけですが、Objective-C側に書かれたenumの扱いには注意が必要です。 結論から言うと…

Swift: AutoLayoutでUIVisualEffectviewをアニメーションさせてみた

iOS8からUIVisualEffectViewというものが追加されました。このビューは様々なエフェクトを自動で表示することができます。Appleの公式すりガラス処理を実現することができます。 今回は、Swiftを使って、このクラスの使い方とAutoLayoutによるアニメーション…

メソッド、クラス、変数、定数宣言時に使えそうなものまとめ

iOS開発でメソッド、クラス、変数、定数の宣言に使えそうなものをまとめました。 Appleのヘッダーファイルを見ているとよく出てくる NS_AVAILABLE_IOS みたいなやつで個人的に使えそうだと思ったものをまとめます。 資料はこちら クラス・メソッド・定数・変…

AVFoundationのキャプチャ機能について

AVFoundationによるキャプチャ機能をまとめたいと思います。 まず、普段あまり使うことがないAVFoundationの簡単な紹介です。このフレームワークはAppleが用意する「音声・動画などの時間ベースのメディアの再生や作成、編集の細かい作業を行うための超強力…

push通知からバックグラウンドでダウンロード

今回はpush通知を受信後バックグラウンドでアプリを起動させ、サーバから情報を取得する方法を紹介します。 そのまえに前回の記事を読むことを推奨します。 サイレント通知もしくは、通常のpush通知を受信した際にバックグラウンドで起動するという設定を行…

SilentNotificationとBackgroundFetchについて

iOS7でアプリがバックグラウンドで動作できるAPIがいくつか追加されました BackgroundFetch これを有効にするとOSが定期的に良いタイミングでバックグラウンドでアプリを起動させ、AppDelegateの application:performFetchWithCompletionHandler: を実行して…