Swiftで遊ぼう! - 655 - longPressed()の実装はこれから
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.3で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
次のTable Viewのチュートリアルを拡張しています。
ロングプレスジェスチャーが発動されて「state」が「.Began」の時にUITableViewCellクラスからスナップショットとなるUIViewクラスを作り出すカスタムメソッドをViewController内に定義します。
func snapshotOfCell(inputView: UIView) -> UIView { UIGraphicsBeginImageContextWithOptions(inputView.bounds.size, false, 0.0) inputView.layer.renderInContext(UIGraphicsGetCurrentContext()!) let image = UIGraphicsGetImageFromCurrentImageContext() as UIImage UIGraphicsEndImageContext() let cellSnapshot : UIView = UIImageView(image: image) cellSnapshot.layer.masksToBounds = false cellSnapshot.layer.cornerRadius = 0.0 cellSnapshot.layer.shadowOffset = CGSizeMake(-5.0, 0.0) cellSnapshot.layer.shadowRadius = 5.0 cellSnapshot.layer.shadowOpacity = 0.4 return cellSnapshot }
理解できていないクラス概念が出てきました。「UIGraphicsBeginImageContextWithOptions()」とは何だ?「ビットマップイメージのcontext(背景)を作って、
「UIGraphicsGetCurrentContexts()」を使って、たった今作った空のビットマップイメージcontext(背景)をinoutViewのlayerに組み込んでcontext(背景)に設定するという説明でいいのでしょうか?
今までUIKitで用意されている部品(UIViewをベースとした、UIImage, UIButton, etc)を標準で使う限り、「layer」とか「context」を意識する必要がなかったので初心者向けのチュートリアルで説明されることはありません。
しかし、UIViewの標準的な表示を越えて、独自の表現(見え方)をしたい場合、UIViewのlayerを使用することになります。
ここまでは何となく理解できます。
今日はここまで。