如何仅从单面绘制带有色调颜色和圆角的 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 上绘制一个带有剪裁而不是圆角的矩形?

NSAttributedString 背景颜色和圆角

SwiftUI:如何更改 NavigationView 的色调(背景颜色)?

如何创建带有圆角背景的 EditText [关闭]

如何在seaborn barplot中使用NaN值作为具有定义颜色的色调

Android:如下关于绘制圆角矩形边框问题,怎么解决?