ios - 如何在 SWIFT 中绘制自定义圆角矩形?
问题描述
我正在尝试以编程方式绘制上图中显示的形状。
这种形状有定制的圆角。
view.layer.cornerRadius = some value less than half diameter
这没有用。设置cornerRadius 在每一侧绘制直线(如底部图像所示),但我试图绘制的形状根本没有直线,也不是椭圆形。
我也在下面尝试过,但没有运气。这段代码只是画了一个椭圆。
var path = UIBezierPath(ovalIn: CGRect(x: 000, y: 000, width: 000, height: 000))
我相信这不能通过设置cornerRadius来完成。
应该还有更多。
我不知道我应该使用什么类以及如何使用。
请任何人给我一些指导。
谢谢!
解决方案
我通过绘制二次曲线来实现这一点。
let dimention: CGFloat = some value
let path = UIBezierPath()
path.move(to: CGPoint(x: dimension/2, y: 0))
path.addQuadCurve(to: CGPoint(x: dimension, y: dimension/2),
controlPoint: CGPoint(x: dimension, y: 0))
path.addQuadCurve(to: CGPoint(x: dimension/2, y: dimension),
controlPoint: CGPoint(x: dimension, y: dimension))
path.addQuadCurve(to: CGPoint(x: 0, y: dimension/2),
controlPoint: CGPoint(x: 0, y: dimension))
path.addQuadCurve(to: CGPoint(x: dimension/2, y: 0),
controlPoint: CGPoint(x: 0, y: 0))
path.close()
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.blue.cgColor
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineWidth = 1.0
shapeLayer.position = CGPoint(x: 0, y: 0)
self.someView.layer.addSublayer(shapeLayer)
推荐阅读
- java - 我需要将 UI 初始化代码放在 IntelliJ Idea 插件中的什么位置?
- android - FragmentPagerAdapter 使用 getChildFragmentManager() 崩溃
- html - 更改信用卡占位符颜色
- c# - 手动创建的 UserControl 未触发 SizeChanged 事件
- google-chrome - 在本地服务器中使用地理定位 API
- haskell - 访问特定 ADT 时出错
- jquery - jQuery 输出图像标题/描述不起作用?
- javascript - 避免 iframe 的 URL 被其他人使用
- php - Slim 容器的正确接口是什么?
- code-generation - Acceleo Trasformation - 找不到带有 uri '*' 的包。