tomoyaonishiのブログ

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

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でベクター画像を利用する。

iOS

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通知からバックグラウンドでダウンロード

iOS

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

SilentNotificationとBackgroundFetchについて

iOS

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