如何围绕按钮的角落

dou*_*e07 177 cocoa-touch rounded-corners uibutton ios

我有一个矩形图像(jpg),并希望用它来填充xcode中带圆角的按钮的背景.

我写了以下内容:

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

但是,我用这种方法得到的按钮没有圆角:它是一个看起来与原始图像完全相同的普通矩形.我怎样才能获得带圆角的图像来代表我的按钮?

谢谢!

dev*_*sri 424

我想我遇到了你的问题,我用UITextArea尝试了以下解决方案,我想这也适用于UIButton.

首先在您的.m文件中导入此内容 -

#import <QuartzCore/QuartzCore.h>
Run Code Online (Sandbox Code Playgroud)

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

    yourButton.layer.cornerRadius = 10; // this value vary as per your desire
    yourButton.clipsToBounds = YES;
Run Code Online (Sandbox Code Playgroud)

希望这对你有用,如果是的话可以沟通.

  • 也适用于"用户定义的运行时属性"检查器 (5认同)

Kru*_*tel 118

您可以通过此RunTime属性实现

在此输入图像描述

我们可以制作自定义按钮.请看截图附件.

请注意:

在运行时属性中更改边框的颜色遵循此指令

  1. 创建CALayer的类别类

  2. 在h文件中

    @property(nonatomic, assign) UIColor* borderIBColor;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在m文件中:

    -(void)setBorderIBColor:(UIColor*)color {
        self.borderColor = color.CGColor;
    }
    
    -(UIColor*)borderIBColor {
        return [UIColor colorWithCGColor:self.borderColor];
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

更新的答案

谢谢

  • 只是我还是答案中的信息不完整?它确实不起作用.更新:只要我没有指定`borderColor`它就可以工作.但是它总是使用黑色作为borderColor. (4认同)
  • 扩展答案:IB中设置的颜色很可能是UIColor类型,它不适用于borderColor,它是CGColorRef.或类似的东西.因此,解决方案是在CALayer上创建一个类别,在头文件中使用类似@property(非原子,赋值)UIColor*borderIBColor;`(它不会与其他名称冲突),实现是:` - (void )setBorderIBColor:(UIColor*)color {self.borderColor = color.CGColor;} - (UIColor*)borderIBColor {return [UIColorcolorWithCGColor:self.borderColor];}` (3认同)

And*_*eev 14

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

您可以直接从"界面"构建器中创建圆角按钮/文本字段:

DCKit:圆形按钮

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


Jav*_*ría 10

向上推到极限角半径以获得一个圆:

    self.btnFoldButton.layer.cornerRadius = self.btnFoldButton.frame.height/2.0;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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


iAn*_*kit 7

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

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;
Run Code Online (Sandbox Code Playgroud)


小智 5

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
Run Code Online (Sandbox Code Playgroud)