如何仅从单面绘制带有色调颜色和圆角的 UIButton
Posted
技术标签:
【中文标题】如何仅从单面绘制带有色调颜色和圆角的 UIButton【英文标题】:how to draw UIButton with tint color and rounder from single side only 【发布时间】:2012-10-11 07:23:18 【问题描述】:我想绘制一个 UIButton,用 红色调 或 rgb 呈现的其他颜色填充,并且只有上边缘是圆形的。 有些人回答我是为了得到一个图像来做到这一点,但每次我想改变它时,我都必须带来新的图像并替换它,我想问我可以从代码中做到这一点而不获取图像。
【问题讨论】:
可能的重复:***.com/questions/4847163/round-two-corners-in-uiview 和 ***.com/questions/4845211/just-two-rounded-corners 谢谢@rdurand,这对 ACB 的回答很有帮助 【参考方案1】:没有直接的方法。实现这一点的唯一方法是创建一个段控件并在其中只保留一个段。
具体实现见this post,
更新:
如果您只想圆两个角,请检查 rdurand 评论中提到的 Round two corners in UIView 或 Just two rounded corners?。由于段控制是UIView
的子视图,这应该可以工作。
【讨论】:
所有的角都已经圆了对吧?检查charles.lescampeurs.org/2011/02/10/…中的图像。如果您只想圆两个角,请查看 rdurand 对问题的评论。 用这些链接更新了我的答案。【参考方案2】:您可以使用 NSBezierPath 的 bezierPathWithRoundedRect:xRadius:yRadius:
方法绘制圆角。然后用另一条贝塞尔路径绘制它。或者您可以使用 moveToPoint: lineToPoint: 和 curveToPoint:controlPoint1:controlPoint2: 定义自定义贝塞尔路径:
看看这个: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSBezierPath_Class/Reference/Reference.html
【讨论】:
以上是关于如何仅从单面绘制带有色调颜色和圆角的 UIButton的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:如何更改 NavigationView 的色调(背景颜色)?