自定义 UIButton 圆角

Posted

技术标签:

【中文标题】自定义 UIButton 圆角【英文标题】:Custom UIButton rounded corners 【发布时间】:2011-11-02 06:15:50 【问题描述】:

我正在自定义 UINavigationBar 并且必须为导航按钮设置自定义背景图像。这样做是这样的:

for (UIView *view in self.navigationController.navigationBar.subviews) 
    if ([[[view class] description] isEqualToString:@"UINavigationButton"]) 
        UINavigationButton *button = (UINavigationButton *)view;
        [button setBackgroundImage:[UIImage imageNamed:@"bar_button.png"] forState:UIControlStateNormal];
        [button setBackgroundImage:[UIImage imageNamed:@"bar_button_black.png"] forState:UIControlStateSelected];
        [button setBackgroundImage:[UIImage imageNamed:@"bar_button_black.png"] forState:UIControlStateHighlighted];
     

这不会被苹果拒绝吗? 如何使 UIButton/UIView 角变圆?

【问题讨论】:

【参考方案1】:

UIView 对象有一个名为layer (CALayer) 的属性,layer 有一个cornerRadius 属性。

【讨论】:

【参考方案2】:

使用您的自定义图像将您的自定义按钮创建为普通 UIButton。然后使用您的新 UIButton 创建 UIBarButtonItems 作为自定义视图(您可以在 UIBarButtonItem 类参考中查看如何执行此操作)。

然后,将您的视图控制器的 navigationItem 设置为让您的新 UIBarButtonItems 作为 leftButtonItem、rightButtonItem 等等。

【讨论】:

好的。看起来没有其他选择。谢谢。【参考方案3】:

不是这样,而是这样做。获取一个 UIButton,然后将其添加到导航按钮。

【讨论】:

以上是关于自定义 UIButton 圆角的主要内容,如果未能解决你的问题,请参考以下文章

带有圆形图像视图的自定义圆形 UIButton

iPhone iOS自定义UIButton与CAGradientLayer,如何让它指示触摸?

Swift 3 - 自定义 UIButton 半径删除约束?

自定义 UIButton 的边缘在与它交互后看起来像素化

UIButton 圆角半径在 CustomClass 中无法正常工作

IOS开发UIButton详解