Die*_*roz 12 uibezierpath swift
我想围绕我的右角,但只适用于左角
let path = UIBezierPath(roundedRect: view.bounds, byRoundingCorners: [UIRectCorner.TopLeft, UIRectCorner.TopRight], cornerRadii: CGSizeMake(20.0, 20.0))
let maskLayer = CAShapeLayer()
maskLayer.path = path.CGPath
view.layer.mask = maskLayer
view.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)
rob*_*off 32
问题是,在为当前设备调整视图大小之前,您将获得视图的界限.它比它在屏幕上出现时要大,所以圆角矩形的右侧偏离屏幕的右侧.
在调整视图大小之后,您需要稍后创建path
和设置maskLayer.path
,这意味着在运行循环的布局阶段期间或之后.因此要么是视图的子类,要么在视图的layoutSubviews
方法中进行,要么在视图控制器的viewDidLayoutSubviews
方法中进行.
小智 19
斯威夫特3
这个对我有用 !
override func layoutSubviews() {
super.layoutSubviews()
DispatchQueue.main.async {
self.containerView.roundCorners(corners: [.topRight,.topLeft], radius: 25)
self.containerView.layer.masksToBounds = true
}
self.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里查看方法"roundCorners":https://stackoverflow.com/a/41217863/3687902
归档时间: |
|
查看次数: |
2731 次 |
最近记录: |