iOS
iOSアプリの証明書周り、非常にわかりにくい。 開発時に毎回どうだったっけ?って忘れてしまうので、自分なりに整理してみました。 証明書周りの構成 証明書周りの構成は4つに分類されています。 App ID 証明書 端末 プロビジョニングファイル developmentと…
swiftで角丸のViewを作るには、layerのcornerRadiusを設定すれば簡単にできますが、これだと4隅すべてが角丸になってしまいます。 上だけを角丸にしたい時などには、一部だけ角丸のパスをUIBezierPathで作成し、CAShapeLayerに設定します。 developer.apple.…
swiftでグラデーションを描画するには、CAGradientLayerを使います。 developer.apple.com let startColor = UIColor(white: 0, alpha: 0).CGColor let endColor = UIColor(white: 0, alpha: 1).CGColor let layer = CAGradientLayer() layer.colors = [star…
動的に要素を並べるようなViewを作成した時に、AutoLayoutの設定の仕方で悩みました。 class CustomView: UIView { init() { super.init(frame: .zero) backgroundColor = .whiteColor() // 正方形のViewを左右に並べる let view1 = UIView(frame: CGRect(x:…
最近は、storyboardもxibも使わない方針で実装しているため、Viewを構築するのも全てコードで定義しています。 特に考えなければ、initializeの時に組み立ててしまうのですが、そうするとViewControllerとは関係のないコードが増えていき、可読性が悪くなり…
selectionStyleを変更するだけです。 import UIKit class CustomCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() // Initialization code selectionStyle = .None } }
コードでAutoLayoutを記述します。 iOSにはVisual Format LanguageというAutoLayoutを直感的に定義できるフォーマットが用意されており、使い方さえ覚えてしまえばちょっとした制約であればサクッとコードで書けてしまいます。 developer.apple.com 使ってみ…
tableViewCellの高さ計算の時など、コード上で対象のViewのAutoLayoutを計算した後のサイズを取得したい時があります。 そんな時は、systemLayoutSizeFittingSizeを使います。 引数で渡す値に応じて、コンテンツを表示するための最小サイズか、最大サイズのC…
facebookに写真をシェアしたい時などに、アプリ側で組みて立てたUIViewからUIImageを生成したい時があります。 例えばアプリ側でこんなViewを組み立ててみます。 これはソースコードは雑につくるとこんな感じです。 5つのUIViewで組み立てられています。 let…
swiftで独自のViewを定義した時に、見た目をxibで整える方法をまとめます。 1. 独自のViewクラスの定義 class CustomView: UIView { } 2. 空のxibファイルを作成 3. xibで見た目を作成 4. File's Ownerで先ほどの独自Viewクラスを指定 これで、とりあえずxib…
要素の座標位置を取得するためには、その要素のframeを見ます。 view.frame.minX view.frame.minY この時の座標位置は親要素から見た時の相対的な位置になります。 例えばviewが3階層の構造になっている場合、それぞれの座標位置は下記のようになります。 黄…
前回swiftでのnilの取り扱いについてまとめました。 【swift】nilとoptionalな型の取り扱い - tanihiro.log 今回はnilを取り扱う時に便利な記法のOptional Bindingについてまとめます。 Optional Binding 必要になるケース 例えば、関数の中には返り値がOpti…
nilの扱い swiftでは通常、変数や定数にnilは代入できません。 var hoge: String = nil let fuga: String = nil これはコンパイルエラーになります。 nilを代入するためには、optionalであることを宣言するために型に?をつけます。 var hoge: String? = nil …
objective-cと変わらないと思ってたらちょこっとだけ違いました。 新規ファイル作成から「Cocoa Touch Class」を選択して 「Also create XIB file」にチェックを入れれば、ViewControllerのファイルと一緒にxibファイルを作成されます。 objective-cであれば…
最近swiftをちょっと勉強しだしたので、ちょっとずつメモを取っていこうと思います。 変数 var hoge: String = "hoge" // 型を宣言する var hoge = "hoge" // 宣言しなくても自動的に判定もする var hoge = "hoge", fuga = "fuga" // カンマで連続で定義する…
xcode内にHTMLを格納して、そのHTMLをWebViewで表示する方法です。 // UIWebViewの初期化 UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; // htmlのパスの取得(今回はsample.html) NSString *path = [[NSBundle mainBundle] p…
UIColorにcolorWithPatternImageというメソッドがあるので、背景画像を渡して対象となるviewのbackgroundColorにセットするだけ。 UIImage *backgroundImage = [UIImage imageNamed:@"bg.png"]; self.view.backgroundColor = [UIColor colorWithPatternImage…
標準のミュージックアプリの様な、UITabBarとUINavigationを同時に使う方法をまとめます。 どうやるのか UINavigationControllerの配列を作り、UITabBarControllerに渡してあげるだけです。 // 各タブのrootとなるViewControllerを指定して // UINavigationC…
最近、自分でobjective-cをちょこちょこ書いていて、API作る側もちょっと気をつけた方がいいなーと思ったことがありました。 それは、プロパティ名です。 1. "id"を使わない objective-cにはid型があるので、プロパティ名でそのままidを使うとまぁややこしく…
Xcodeでブレイクポイントを設定して処理を止めた時とかに出てくるデバッガ。 こいつ。 よくわからないエラーとかも吐いてくるので、あんまり好きじゃありませんでした。 しかも左側に出てくる変数とかは、中身が見れそうで見れない。 そのチラリズムの精神は…
@hirotterと@ki_230の共同開発を経て、本日生まれて初めてiPhoneアプリをリリースしました! 週刊Qiita 作ったアプリは至ってシンプル。 Qiitaの週間ストック数ランキングを閲覧することができるだけです。 ※非公式アプリですが、Qiitaのサポートチームに問…
UINavigationBarのタイトルに画像を設定してみます。 こんな感じ。 UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]; self.navigationItem.titleView = titleImageView; ViewControllerのnavigationIt…
UINavigationControllerの使い方を簡単にまとめます。 UINavigationControllerを定義する まずは、UINavigationControllerを定義します。 その時、一番最初に表示したいViewのViewControllerを渡します。 TAViewController *viewController = [[TAViewContro…
InterfaceBuilderを使って、TableViewのセルをカスタマイズする方法をまとめます。 セル用のclassを新規作成 これでカスタムセル用のクラスが作成されますが、IntefaceBuilderがありません。 なので、作ります。これで空の状態のxibファイルが作成されます。…
最近、UITableViewはなんとなく触れる用になってきたので、基礎的な使い方をまとめます。 とりあえず表示してみる とりあえず画面にtableViewを表示します。 UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableVie…