我需要为我的iPhone应用创建自定义垂直滑块,因为UISlider会缩小范围。它将被用作我的遥控直升机的油门“棍子”。 我设法与为iPhone创建自定义滑块
throttleSlider.transform = CGAffineTransformMakeRotation(3*M_PI_2);
旋转在Xcode滑块,但我认为这是相当丑陋,因为滑板仍然在我的故事板水平出现。此外,我无法找到使滑块更宽。
我将如何处理这个问题?
谢谢。
我需要为我的iPhone应用创建自定义垂直滑块,因为UISlider会缩小范围。它将被用作我的遥控直升机的油门“棍子”。 我设法与为iPhone创建自定义滑块
throttleSlider.transform = CGAffineTransformMakeRotation(3*M_PI_2);
旋转在Xcode滑块,但我认为这是相当丑陋,因为滑板仍然在我的故事板水平出现。此外,我无法找到使滑块更宽。
我将如何处理这个问题?
谢谢。
在我正在开发的应用程序中,我们需要一个自定义滑块。它必须更宽(44像素宽,表格视图单元格的默认大小)。我们通过使用可拉伸的图像和调整滑块的属性来完成我们的目标:
UIImage* sliderCenterImage = [UIImage imageNamed:@"sliderCenter.png"];
[slider setThumbImage:sliderCenterImage forState:UIControlStateNormal];
UIImage *leftStretch2 = [[UIImage imageNamed:@"sliderLeft.png"]
stretchableImageWithLeftCapWidth:5.0 topCapHeight:0.0];
slider setMinimumTrackImage:leftStretch2 forState:UIControlStateNormal];
UIImage *rightStretch = [[UIImage imageNamed:@"sliderRight.png"]
stretchableImageWithLeftCapWidth:1.0 topCapHeight:0.0];
[slider setMaximumTrackImage:rightStretch2 forState:UIControlStateNormal];
这样,我得到了满足一个的tableView全细胞的滑块。 thumbImage是表示滑块中间的图像(默认为圆点),minimumTrackImage将是滑块左侧的部分(默认为蓝色),maximumTrackImage为该部分通常在滑块中心右侧留空。 UISlider的更多属性允许进一步定制。看看UISlider developer reference
希望这会有所帮助。
我用这个实施UICustomSwitch
之前,从美洲豹软件的博客:
它试图以自定义熟悉UISwitch
类,但它通过继承UISlider
,并更换正常开关实现这一自定义图像的图像。你可以下载这个代码,然后用你自己绘制的东西替换包含的图像。
,因为这是打算成为一个开关,它只有开和关的设置,你会看到,它响应触摸本:
[self setOn:on animated:YES];
刚刚摆脱调用的代码setOn:animated:
,以便滑块不会将其值强制设置为0.0或1.0。
我会看着这个,谢谢 – chwi 2012-07-19 09:01:42
没有办法让UISlider更宽。为什么不让自己的滑块扩展UIControl类并处理触摸事件。
而我不知道如何...... – chwi 2012-07-19 09:00:04
这绝对是错误的。我做了一个更宽的滑块。 – 2012-07-19 09:04:16
@那家伙,你能告诉我怎么样吗? – 2012-07-19 10:39:28
作为已更新的答案,不推荐使用stretchableImageWithLeftCapWidth。它建议使用
对于自定义滑块在迅速:
var thumb = UIImage(named: "slider_thumb")
musicSlider.setThumbImage(thumb, forState: UIControlState.Normal)
var left = UIImage(named: "left_slide")?.resizableImageWithCapInsets(UIEdgeInsets(top: 0.0,left: 0.0,bottom: 0.0,right: 0.0))
musicSlider.setMinimumTrackImage(left, forState: UIControlState.Normal)
var right = UIImage(named: "right_slide")?.resizableImageWithCapInsets(UIEdgeInsets(top: 0.0,left: 0.0,bottom: 0.0,right: 0.0))
musicSlider.setMaximumTrackImage(right, forState: UIControlState.Normal)
的UIEdgeInserts指定将不会调整图像的缓冲区。所以左:15.0将意味着从左边15像素的区域不会被调整大小。在我的情况下,我不在乎,所以它都是零。
作为说明,图像本身就是使滑块变宽的原因。我的拇指图像的高度为35像素,左右滑块图像的高度为20像素。所有内容都是从Images.xcassets中切片并调整大小(其中应保留图片)
故事板不会反映您以编程方式执行的更改。 – 2012-07-19 08:59:39
这是正确的:) – chwi 2012-07-19 09:01:01