-4

我想动态创建一些滑块

使用我的 IBAction create1Slider,我可以移动我的滑块

使用我的 IBAction create10Sliders,我无法移动我的滑块

怎么了?

- (IBAction) create1Slider:(id)sender {
    UISlider *slider = [[[UISlider alloc] initWithFrame:CGRectMake(150, 150, 100, 100)] autorelease];
    slider.minimumValue = 1;
    slider.maximumValue = 255;
    slider.continuous = YES;
    [self.view addSubview:slider];
    }

///////////////////////

- (IBAction) create10Sliders:(id)sender {
for(int i=0; i< 10
; i++)
{

    UISlider *slider = [[[UISlider alloc] initWithFrame:CGRectMake(50, 50, 100, 100+i*80)] autorelease];
    forControlEvents:UIControlEventValueChanged];
    slider.minimumValue = 1;
    slider.maximumValue = 255;
    slider.continuous = YES;
    [self.view addSubview:slider];
    //[slider release];

}
}
4

2 回答 2

1

由于 creatin 在相同的坐标上,您最终创建了所有相互放置的十个滑块

UISlider *slider = [[[UISlider alloc] initWithFrame:CGRectMake(50, 50, 100, 100+i*80)] autorelease];

你保持xy50 和 50 相同。和height100 一样,改变width了 100+i*80。

作为:

CGRectMake(x, y, width, height) 

y如果您希望它们垂直放置,则需要进行更改。

于 2013-03-29T20:07:55.797 回答
0

问题是所有 10 个滑块都在同一原点 (50,50) 处相互重叠创建。您需要它们的原点(尤其是 y 值)不同。

您看不到这一事实的原因是滑块的大部分背景都是透明的。所以你有这些巨大的增加的矩形重叠,最大的覆盖了所有其他的;但你看到的只是轨道和拇指。为了可视化问题,给每个滑块一个背景颜色。那么问题就很明显了。

于 2013-03-29T20:08:06.847 回答