読者です 読者をやめる 読者になる 読者になる

【swift】Viewの一部を角丸にする

swiftで角丸のViewを作るには、layerのcornerRadiusを設定すれば簡単にできますが、これだと4隅すべてが角丸になってしまいます。 上だけを角丸にしたい時などには、一部だけ角丸のパスをUIBezierPathで作成し、CAShapeLayerに設定します。 developer.apple.…

【swift】グラデーションを描画する

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…

【swift】Viewに自分自身の大きさを定義して、動的なViewを正しくレイアウトする

動的に要素を並べるようなViewを作成した時に、AutoLayoutの設定の仕方で悩みました。 class CustomView: UIView { init() { super.init(frame: .zero) backgroundColor = .whiteColor() // 正方形のViewを左右に並べる let view1 = UIView(frame: CGRect(x:…

【swift】ViewControllerとViewを分離させてViewControllerの記述を減らす

最近は、storyboardもxibも使わない方針で実装しているため、Viewを構築するのも全てコードで定義しています。 特に考えなければ、initializeの時に組み立ててしまうのですが、そうするとViewControllerとは関係のないコードが増えていき、可読性が悪くなり…

【swift】UITableViewCellの選択した時の表示を変更する

selectionStyleを変更するだけです。 import UIKit class CustomCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() // Initialization code selectionStyle = .None } }

【swift】コードでAutoLayout その1 - Visual Format Language

コードでAutoLayoutを記述します。 iOSにはVisual Format LanguageというAutoLayoutを直感的に定義できるフォーマットが用意されており、使い方さえ覚えてしまえばちょっとした制約であればサクッとコードで書けてしまいます。 developer.apple.com 使ってみ…

【swift】対象のビューのAutoLayoutを計算した後のCGSizeを取得する

tableViewCellの高さ計算の時など、コード上で対象のViewのAutoLayoutを計算した後のサイズを取得したい時があります。 そんな時は、systemLayoutSizeFittingSizeを使います。 引数で渡す値に応じて、コンテンツを表示するための最小サイズか、最大サイズのC…

【swift】【iOS】UIViewからUIImageを生成する

facebookに写真をシェアしたい時などに、アプリ側で組みて立てたUIViewからUIImageを生成したい時があります。 例えばアプリ側でこんなViewを組み立ててみます。 これはソースコードは雑につくるとこんな感じです。 5つのUIViewで組み立てられています。 let…

【iOS】【swift】カスタムViewとxibを紐付ける

swiftで独自のViewを定義した時に、見た目をxibで整える方法をまとめます。 1. 独自のViewクラスの定義 class CustomView: UIView { } 2. 空のxibファイルを作成 3. xibで見た目を作成 4. File's Ownerで先ほどの独自Viewクラスを指定 これで、とりあえずxib…

【iOS】【Swift】convertRectを使ってframe位置を計算する親要素を変更する

要素の座標位置を取得するためには、その要素のframeを見ます。 view.frame.minX view.frame.minY この時の座標位置は親要素から見た時の相対的な位置になります。 例えばviewが3階層の構造になっている場合、それぞれの座標位置は下記のようになります。 黄…

【swift】Optional Bindingについて

前回swiftでのnilの取り扱いについてまとめました。 【swift】nilとoptionalな型の取り扱い - tanihiro.log 今回はnilを取り扱う時に便利な記法のOptional Bindingについてまとめます。 Optional Binding 必要になるケース 例えば、関数の中には返り値がOpti…

【swift】nilとoptionalな型の取り扱い

nilの扱い swiftでは通常、変数や定数にnilは代入できません。 var hoge: String = nil let fuga: String = nil これはコンパイルエラーになります。 nilを代入するためには、optionalであることを宣言するために型に?をつけます。 var hoge: String? = nil …

【swift】InterfaceBuilderを使用してViewControllerを組み立てる

objective-cと変わらないと思ってたらちょこっとだけ違いました。 新規ファイル作成から「Cocoa Touch Class」を選択して 「Also create XIB file」にチェックを入れれば、ViewControllerのファイルと一緒にxibファイルを作成されます。 objective-cであれば…

【swift】変数・定数・関数を定義する

最近swiftをちょっと勉強しだしたので、ちょっとずつメモを取っていこうと思います。 変数 var hoge: String = "hoge" // 型を宣言する var hoge = "hoge" // 宣言しなくても自動的に判定もする var hoge = "hoge", fuga = "fuga" // カンマで連続で定義する…