Swift UIView의 일부를 각환으로 만들고 싶어요.
4593 단어 Swift
UIView의 일부를 둥글게 만들고 싶어요.
이 글은 TECOTEC Advent Calendar 2018 11일째 되는 글이다.
소스 코드
개발 환경: Xcode:10.1
개발 언어: Swift 4.2
[UIView.layer.maskedCorners로 설정할 수 있는 값(iOS 11 이후)]
.layer MinXMiny Corner 왼쪽 위
.layer MaxMiny Corner 오른쪽 위
.layer MinXMaxYCorner 왼쪽 아래
.layer MaxXMaxYCorner 오른쪽 아래
[UIBezierPath로 설정할 수 있는byRounding Corners의 값(iOS 11보다 작음)]
왼쪽 위
오른쪽 위
.bottomLeft 왼쪽 아래
.bottomRight 오른쪽 아래
.all Corners 전체
※ autoLayout 사용 시 iOS 11 미만의 각환 처리가viewDidLoad()일 경우 원활하게 진행되지 않을 수 있으므로viewDidApper() 이후 안전 기입
sample1.swiftimport UIKit
class ViewController: UIViewController {
@IBOutlet weak var yellowView: UIView!
@IBOutlet weak var blueView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
/// iOS11以降の角丸処理
blueView.layer.cornerRadius = 20
blueView.layer.maskedCorners = [.layerMaxXMaxYCorner, .layerMaxXMinYCorner]
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
/// iOS11未満の角丸処理
let path = UIBezierPath(roundedRect:yellowView.bounds,
byRoundingCorners:[.topRight, .bottomRight],
cornerRadii: CGSize(width: 20, height: 20))
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
yellowView.layer.mask = maskLayer
}
}
상기 원본 파일을 실행하면 이런 느낌이 들 수 있습니다
감상
iOS11 이후에 각환 처리가 쉬워졌네요.
Reference
이 문제에 관하여(Swift UIView의 일부를 각환으로 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t_kanade/items/a7e2228e592ee332323b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var yellowView: UIView!
@IBOutlet weak var blueView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
/// iOS11以降の角丸処理
blueView.layer.cornerRadius = 20
blueView.layer.maskedCorners = [.layerMaxXMaxYCorner, .layerMaxXMinYCorner]
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
/// iOS11未満の角丸処理
let path = UIBezierPath(roundedRect:yellowView.bounds,
byRoundingCorners:[.topRight, .bottomRight],
cornerRadii: CGSize(width: 20, height: 20))
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
yellowView.layer.mask = maskLayer
}
}
Reference
이 문제에 관하여(Swift UIView의 일부를 각환으로 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/t_kanade/items/a7e2228e592ee332323b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)