gpt4 book ai didi

ios - 在 iOS7 中创建没有图像的圆形按钮

转载 作者:技术小花猫 更新时间:2023-10-29 10:11:49 26 4
gpt4 key购买 nike

我想重新创建 iOS7 时钟应用程序中的圆形按钮。这些按钮基本上是根据按钮状态(绿色边框、红色边框、灰色填充)具有不同外观的圆圈。

我当然可以使用带有不同状态图像的简单 UIButton 来实现这一点。

不过,我正在寻找一种以编程方式绘制圆的解决方案,这样我就可以轻松更改半径、笔画宽度等。

据我所知,UIButton 只允许我为每个状态定义一个 UIImage,因此我不能直接修改每个状态的图层(例如,提供带有 cornerRadius 的图层)。还有别的办法吗?

最佳答案

创建自定义按钮可能会有所帮助。

在.h文件中;

#import <UIKit/UIKit.h>
@interface CircleLineButton : UIButton

- (void)drawCircleButton:(UIColor *)color;

@end

在.m文件中;

    #import "CircleLineButton.h"

@interface CircleLineButton ()

@property (nonatomic, strong) CAShapeLayer *circleLayer;
@property (nonatomic, strong) UIColor *color;
@end

@implementation CircleLineButton



- (void)drawCircleButton:(UIColor *)color
{
self.color = color;

[self setTitleColor:color forState:UIControlStateNormal];

self.circleLayer = [CAShapeLayer layer];

[self.circleLayer setBounds:CGRectMake(0.0f, 0.0f, [self bounds].size.width,
[self bounds].size.height)];
[self.circleLayer setPosition:CGPointMake(CGRectGetMidX([self bounds]),CGRectGetMidY([self bounds]))];

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame))];

[self.circleLayer setPath:[path CGPath]];

[self.circleLayer setStrokeColor:[color CGColor]];

[self.circleLayer setLineWidth:2.0f];
[self.circleLayer setFillColor:[[UIColor clearColor] CGColor]];

[[self layer] addSublayer:self.circleLayer];
}

- (void)setHighlighted:(BOOL)highlighted
{
if (highlighted)
{
self.titleLabel.textColor = [UIColor whiteColor];
[self.circleLayer setFillColor:self.color.CGColor];
}
else
{
[self.circleLayer setFillColor:[UIColor clearColor].CGColor];
self.titleLabel.textColor = self.color;
}
}

@end

然后在 View Controller 中调用[self.myCircleButton drawCircleButton:[UIColor myColor]]

关于ios - 在 iOS7 中创建没有图像的圆形按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19008168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com