ChatGPT解决这个技术问题 Extra ChatGPT

如何使按钮的角变圆

我有一个矩形图像(jpg),想用它来填充 xcode 中圆角按钮的背景。

我写了以下内容:

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
CGRect frame = CGRectMake(x, y, cardWidth, cardHeight);
button.frame = frame;
[button setBackgroundImage:backImage forState:UIControlStateNormal];

然而,我用这种方法得到的按钮没有圆角:它是一个普通的矩形,看起来和我的原始图像完全一样。我怎样才能得到一个圆角的图像来代表我的按钮?

谢谢!


h
halfer

我用 UITextArea 尝试了以下解决方案,我希望这也适用于 UIButton。

首先在你的 .m 文件中导入这个 -

#import <QuartzCore/QuartzCore.h>

然后在您的 loadView 方法中添加以下行

    yourButton.layer.cornerRadius = 10; // this value vary as per your desire
    yourButton.clipsToBounds = YES;

也适用于“用户定义的运行时属性”检查器
也适用于swift!只需将 YES 更改为 true。
K
Krutarth Patel

你可以通过这个 RunTime Attributes 来实现

https://i.stack.imgur.com/40Nyh.png

我们可以制作自定义按钮。请看随附的屏幕截图。

请注意:

在运行时属性中更改边框颜色按照此说明

在 h 文件中创建 CALayer 的类别类 @property(nonatomic, assign) UIColor* borderIBColor;在 m 文件中:-(void)setBorderIBColor:(UIColor*)color { self.borderColor = color.CGColor; } -(UIColor*)borderIBColor { return [UIColor colorWithCGColor:self.borderColor]; }

现在开始设置边框颜色检查截图

https://i.stack.imgur.com/FD3Ew.png

谢谢


只有我还是答案中的信息不完整?它真的不起作用。更新:只要我不指定 borderColor,它就可以工作。但它总是使用黑色作为边框颜色。
扩展答案:IB 中设置的颜色可能是 UIColor 类型,它不适用于 CGColorRef 的borderColor。或类似的东西。所以一个解决方案是在 CALayer 上创建一个类别,在头文件中使用类似 @property(nonatomic, assign) UIColor* borderIBColor; 的内容(与其他名称不冲突),实现为:-(void)setBorderIBColor:(UIColor*)color{self.borderColor = color.CGColor;} -(UIColor*)borderIBColor{return [UIColorcolorWithCGColor:self.borderColor];}
如果您不想要边框颜色,请将borderRadius 设置为0,这样您就没有了!
斯威夫特呢?
@JayprakashDubey 我创建了 CALayer 的扩展。
J
Javier Calatrava Llavería

将圆角半径推到极限以得到一个圆:

    self.btnFoldButton.layer.cornerRadius = self.btnFoldButton.frame.height/2.0;

https://i.stack.imgur.com/yUYf0.png

如果按钮框架是正方形,则 frame.height 或 frame.width 无关紧要。否则使用两者中最大的一个。


A
Andrey Gordeev

您可能想查看我的名为 DCKit 的库。它是在最新版本的 Swift 上编写的。

您可以直接从界面生成器制作圆角按钮/文本字段:

https://i.stack.imgur.com/KuaHw.png

它还具有许多其他很酷的功能,例如带有验证的文本字段、带有边框的控件、虚线边框、圆形和细线视图等。


S
Sangram Shivankar
UIButton* closeBtn = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 90, 35)];
//Customise this button as you wish then
closeBtn.layer.cornerRadius = 10;
closeBtn.layer.masksToBounds = YES;//Important

i
iAnkit

如果现有项目中没有 QuartCore 框架,则在 viewcontroller.m 中导入 #import <QuartzCore/QuartzCore.h>

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect]];
CGRect frame = CGRectMake(x, y, width, height); // set values as per your requirement
button.layer.cornerRadius = 10;
button.clipsToBounds = YES;

i
iOS Lifee

首先设置按钮的宽度=100和高度=100

目标 C 解决方案

YourBtn1.layer.cornerRadius=YourBtn1.Frame.size.width/2;
YourBtn1.layer.borderColor=[uicolor blackColor].CGColor;
YourBtn1.layer.borderWidth=1.0f;

斯威夫特 4 解决方案

YourBtn1.layer.cornerRadius = YourBtn1.Frame.size.width/2
YourBtn1.layer.borderColor = UIColor.black.cgColor
YourBtn1.layer.borderWidth = 1.0

N
Naresh

试试我的代码。在这里您可以设置 UIButton 的所有属性,例如文本颜色、背景颜色、圆角半径等。

extension UIButton {
    func btnCorner() {
        layer.cornerRadius = 10
        clipsToBounds = true
        backgroundColor = .blue
    }
}

现在这样调用

yourBtnName.btnCorner()

e
elp

如果你想要一个圆角只到一个角或两个角,等等......阅读这篇文章:

[ObjC] – 带圆角的 UIButton - http://goo.gl/kfzvKP

这是一个 XIB/Storyboard 子类。无需编写代码即可导入和设置边框。


p
pableiros

对于斯威夫特:

button.layer.cornerRadius = 10.0

K
Kiran Jadhav

为 Swift 3 更新:

使用下面的代码使 UIButton 圆角:

 yourButtonOutletName.layer.cornerRadius = 0.3 *
        yourButtonOutletName.frame.size.height

M
Mr.Javed Multani

https://i.stack.imgur.com/Pyzhw.png

对于目标 C:

submitButton.layer.cornerRadius = 5;
submitButton.clipsToBounds = YES;

对于斯威夫特:

submitButton.layer.cornerRadius = 5
submitButton.clipsToBounds = true

A
Adwait Gaikwad

斯威夫特 4 更新

我也尝试了很多选项,但我仍然无法让我的 UIButton 圆角。我在 viewDidLayoutSubviews() 解决了我的问题中添加了圆角半径代码。

func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        anyButton.layer.cornerRadius = anyButton.frame.height / 2
    }

我们也可以如下调整cornerRadius

func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        anyButton.layer.cornerRadius = 10 //Any suitable number as you prefer can be applied 
    }

C
Community

另一个设置边框(使其更像按钮)的替代答案在这里...... How to set rectangle border for custom type UIButton


J
Jayesh Nai

对于 iOS Swift 4

button.layer.cornerRadius = 25;
button.layer.masksToBounds = true;

u
uyarc

您可以为视图上的按钮使用插座连接和 didSet 功能;

 @IBOutlet weak var button: UIButton!{
        didSet {
            button.layer.cornerRadius = 5;
            button.layer.masksToBounds = true;
        }
    }