gpt4 book ai didi

iphone - 如何随着值的变化增加和减少 uislider 中的圆圈大小

转载 作者:行者123 更新时间:2023-11-29 13:09:09 25 4
gpt4 key购买 nike

我想在 uislider 中随着值的变化增加和减少圆的大小..

这里是我的代码

画.m

- (id)initWithFrame:(CGRect)frame value:(float )x
{
value=x;
self = [super initWithFrame:frame];
if (self) {

}
return self;
}

- (void)drawRect:(CGRect)rect{

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGRect rectangle = CGRectMake(6,17,value,value);
CGContextAddEllipseInRect(context, rectangle);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextFillPath(context);

}

和ViewController.m

@implementation ViewController
@synthesize mySlider,colorLabel;

- (void)viewDidLoad
{ [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)sliderValue:(UISlider*)sender
{

float r=[[NSString stringWithFormat:@"%.0f",mySlider.value] floatValue];
NSLog(@"value...%f",r);
CGRect positionFrame = CGRectMake(10,100,200,100);
circle = [[draw alloc] initWithFrame:positionFrame value:r];
circle.backgroundColor=[UIColor clearColor];
[self.view addSubview:circle];


}

在这段代码中,圆圈大小增加但没有减少,另一个问题是圆圈外观,输出是。

enter image description here

最佳答案

好的,您的代码可以工作,只是看起来不像。添加

[circle removeFromSuperview];
circle = nil;

正上方

circle = [[draw alloc] initWithFrame:positionFrame value:r];

你不断在之前的圆圈之上画新的圆圈,所以它呈现出奇怪的形状,而且看起来也不像在减少。

编辑

如@Larme 指出的那样,要重新绘制您的圆圈而不是每次都创建一个新圆圈,您必须更改您的“绘制”对象以包含一个公共(public)方法,该方法可以重新分配您的“绘制”圆圈对象的直径。

-(void) setDiameterWithFloat: (float)x{

value = x;

}

然后在您的 sliderValue IBAction 中,调用这个新方法根据您的 slider 分配新的直径并使用 setNeedsDisplay 重新绘制圆:

[circle setDiameterWithFloat:mySlider.value];
[circle setNeedsDisplay];

这允许您将对象的初始化移动到 ViewController 中的 viewDidLoad,在那里它将与 View 的其余部分一起创建和加载一次。

关于iphone - 如何随着值的变化增加和减少 uislider 中的圆圈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810573/

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