【发布时间】:2016-01-19 13:35:57
【问题描述】:
我正在尝试弄清楚如何屏蔽 UIView 以显示一个形状,该形状代表一个正方形,上面有一半的圆。
基本上,这就像仅对顶部两个角应用边框半径以将它们弄圆并创建弧线。
我正在使用 swift,这让我发疯。
编辑:CornerRadius 没有做我想做的事。我觉得我必须使用 CGShapeLayer,但我不确定如何创建弧线。
EDIT3:
考虑到解释我想要什么,提供图片,并解释我不明白我需要做什么,或者我需要如何做这对某些人来说还不够,以下是我尝试过的:
尝试设置layer.cornerRadius 属性,同时将视图的底部推到屏幕之外以隐藏底角以免出现截断,这种类型的遮罩过于圆形,无法提供正确的弧形结果。
我尝试使用UIBezierPath 设置顶部两个角以使用视图width / 2 的cornerRadii。这也没有产生适当的结果。在尝试将值硬编码到cornerRadii 中时,我注意到无论值如何,我似乎都无法获得我想要的结果。
还有哪些其他选择?还是我只是错误地使用了 BezierPath?
编辑 4:
这是我的原始代码。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let bezierPath = UIBezierPath(roundedRect: navBarView.bounds, byRoundingCorners: [.TopLeft, .TopRight], cornerRadii: CGSizeMake(navBarView.bounds.width / 2, navBarView.bounds.width / 2)).CGPath;
let shapeLayer = CAShapeLayer();
shapeLayer.bounds = navBarView.bounds
shapeLayer.path = bezierPath
navBarView.layer.mask = shapeLayer
updateUI() // <-- Label text, etc.
}
另外,如前所述,曾尝试做navBarView.layer.cornerRadius = x
【问题讨论】:
-
你能展示你尝试过的代码以及你需要哪种类型的输出
-
添加了我想要完成的内容
-
我正在使用 swift,这让我发疯了。 代码在哪里?
-
@vikingosegundo - 代码与下面发布的相同。我已经尝试使用cornerRadius 和 UIBezierPath 并且无法获得正确的结果。
标签: ios swift uibezierpath cashapelayer