自定义滑块控件

Posted

技术标签:

【中文标题】自定义滑块控件【英文标题】:Customizing a slider control 【发布时间】:2011-05-03 05:44:09 【问题描述】:

我想但找不到任何可以应用的东西,我要制作的滑块应该如下图所示。请任何人建议我如何做到这一点....

.

【问题讨论】:

【参考方案1】:

试试这个代码..

CGRect frame = CGRectMake(174, 12.0, 120.0, 40);
customSlider = [[UISlider alloc] initWithFrame:frame];
[customSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
// in case the parent view draws with a custom color or gradient, use a transparent color
customSlider.backgroundColor = [UIColor clearColor];    
UIImage *stetchLeftTrack = [[UIImage imageNamed:@"orangeslide.png"]
                            stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
UIImage *stetchRightTrack = [[UIImage imageNamed:@"yellowslide.png"]
                             stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
[customSlider setThumbImage: [UIImage imageNamed:@"slider_ball.png"] forState:UIControlStateNormal];
[customSlider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
[customSlider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];
customSlider.minimumValue = 0.0;
customSlider.maximumValue = 100.0;
customSlider.continuous = YES;
customSlider.value = 50.0;

// Add an accessibility label that describes the slider.
[customSlider setAccessibilityLabel:NSLocalizedString(@"CustomSlider", @"")];
[self.view addSubview:customSlider];
customSlider.tag = 1;

【讨论】:

这是一篇好文章,但它不符合我的要求朋友。我不想更改滑块的 minimumTrackImage 和 maximumTrackImage 但这些需要稳定并且应该看起来像中的图像问题..请告诉我与此相关的任何事情! 从这个来源复制粘贴:uispec.googlecode.com/svn/trunk/xcode/UICatalogDemo/… 没有它的复制和粘贴来自苹果示例代码,而不是来自您提供的链接 正如我所说的那样,这是一篇好帖子,我感谢你的朋友所做的努力。无论是从任何地方复制和粘贴都没有关系,但我找到了解决问题的方法。这不是我需要的确切答案,但它给了我一些寻找解决方案的想法。我对这段代码做了一些修改,我解决了我的问题....谢谢阿曼!! 亲爱的,Sudhanshu,如果您找到了您的问题的确切解决方案,而不是在这里发布,那么其他人也可以知道。也包括我..我也在寻找相同的..【参考方案2】:

试试这个

CGRect frame = *youe required frame*;
UISlider * customSlider = [[UISlider alloc] initWithFrame:frame];

// in case the parent view draws with a custom color or gradient, use a transparent color
customSlider.backgroundColor = [UIColor clearColor];    
UIImage *stetchLeftTrack = [[UIImage imageNamed:@"orangeslide.png"]
                                        stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
UIImage *stetchRightTrack = [[UIImage imageNamed:@"yellowslide.png"]
                                         stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
[customSlider setThumbImage: [UIImage imageNamed:@"slider_ball.png"] forState:UIControlStateNormal];
[customSlider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
[customSlider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];
customSlider.minimumValue = 0.0;
customSlider.maximumValue = 100.0;
customSlider.continuous = YES;
customSlider.value = 50.0;
[customSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubView:customSlider];
[customSlider release];

结果如下:-

根据您的要求添加图像此代码导致此滑块

【讨论】:

@iphone monster 这是 UICatalog 示例应用程序中使用的代码。首先我想给你一个链接,但我只给你相关的代码。Aman 也可能会这样想,但无论如何你得到了解决方案。:) 朋友问题还没有解决 :( ,我不想改变滑块的 minimumTrackImage 和 maximumTrackImage ,这些图像不应该在那里,但滑块看起来像有问题的图片所示。 .请告诉我是否有其他解决方案!:( @SudhanshuSrivastava 如果您不更改图像,您将如何获得红绿色滑块轨道。我引用 APPLE -“滑块控件使用两个不同的图像绘制轨道,这些图像是可定制的” 感谢您的精彩全文,如果您想使用自定义控件,它真的很有帮助

以上是关于自定义滑块控件的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义滑块控件,如 wpf 中的音量

iOS 自定义控件

如何将箭头控件设置为自定义按钮

Qt编写自定义控件28-颜色滑块面板

Android中的自定义控件

自定义 UIControl(滑块)在与交互之前不遵守约束