[Swift] 角丸にした縁取りのあるいい感じの背景をコードで作る
ユーティリティ系のアプリでよく見かける縁取りのある背景を、画像を使わずに作ります。
こういう感じのを作りたい。
角丸にしてそれっぽく。
もくじ
サンプルコード
カスタムビューを作って自前で描画してもいいのですが、簡単なUIだけのアプリならそこまでしなくてもいいと思います。なので手っ取り早く角丸にしたUIViewを中心においてそれっぽくします。
Rotate時には一度追加したUIViewを消して作り直す必要があるため一旦消しています。
メンバ変数で保持しておいて、サイズを変えるほうが負荷は低いと思います。
import UIKit class ViewController: UIViewController { override func viewDidLayoutSubviews() { // Rotate時にUIViewが残ってしまうので一度消す if let subviews = view?.subviews { for subview in subviews { subview.removeFromSuperview() } } view.backgroundColor = .cyan let bounds = view.bounds let inset = view.safeAreaInsets // SafeAreaぴったりだと窮屈なので少し小さくする let marginH:CGFloat = 20 let marginV:CGFloat = 40 // 枠内のサイズを決める let width = bounds.width - (inset.left + inset.right) - marginH * 2 let height = bounds.height - (inset.top + inset.bottom) - marginV * 2 // 枠の内側に当たるViewを作る let frameView = UIView(frame: CGRect(origin: CGPoint(x: marginH, y: marginV), size: CGSize(width: width, height: height))) frameView.center = view.center frameView.backgroundColor = .white view.addSubview(frameView) // 枠を角丸にする frameView.layer.cornerRadius = 15 } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } }
おしまい。
ディスカッション
コメント一覧
まだ、コメントがありません