我正在实现一个用户可以操作设置距离的UISlider.我从未使用过CocoaTouch UISlider,但是使用过其他框架滑块,通常有一个变量用于设置"step"和其他"helper"属性.
UISlider的文档仅处理最大值和最小值,输出始终为6十进制浮点数,与"滑块nob"的位置成线性关系.我想我将不得不一步一步地实现所需的功能.
对于用户来说,最小/最大值的范围从10米到999公里,我试图以指数方式实现这一点,这对用户来说是自然的.即,用户体验到对价值的控制感,无论大小.此外,"输出"具有合理的价值.值如10m 200m 2.5km 150 km等而不是1.2342356 m或108.93837756 km.
我希望步长增加10米,前200米,然后可能是50米到500米,然后当通过1000米时,它开始处理公里,所以它的步长= 1公里直到50公里,然后可能25公里步等.
无论如何,我最终会进行大量的舍入和大量的计算,包含在for语句和NSString/Number转换中,每次用户移动滑块一点点.
我希望有人能借给我一些灵感/数学帮助,或者让我意识到一种更精益的方法来解决这个问题.
我的最后一个想法是用100个字符串值填充和数组,然后让滑块int值对应一个字符串,这不是很灵活,但可行.
提前感谢您给予的任何帮助:)
如何将滑块设置为单击位置,并在iPhone编程中的UISlider上单击的位置获取滑块值.我知道我们可以将滑块拖动到那个位置,但我不想这样做.你能告诉我如何将滑块设置为点击位置吗?这可能吗?
我试图将UISlider的值设置为AVPlayer的当前时间.
我正在尝试使用此代码 audioPlayer.currentTime = nowPlayingSlider.value;
我收到此错误:
Setter method is needed to assign to object using property assignment syntax
我如何让它工作.
我有一个UIslider设置AVAdioRecording的位置:
CGRect frame = CGRectMake(50.0, 230.0, 200.0, 10.0);
aSlider = [[UISlider alloc] initWithFrame:frame];
// Set a timer which keep getting the current music time and update the UISlider in 1 sec interval
sliderTimer = [NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];
// Set the maximum value of the UISlider
aSlider.maximumValue = player.duration;
// Set the valueChanged target
[aSlider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged];
[self.ViewA addSubview:aSlider];
- (void)updateSlider {
// Update the slider about the music time
[UIView beginAnimations:@"returnSliderToInitialValue" context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:1.3]; …Run Code Online (Sandbox Code Playgroud) 我们目前正在测试iOS 8设备上商店中的应用程序(iOS 7应用程序).我们注意到UISliders存在很大的性能问题.
如果我们将滑块从左向右快速拉动几次,滑块将不会立即转到我们的最后位置.它将执行我们用手指完成的每一个动作.好像中间触摸事件没有被正确取消.
在iOS 7上,滑块性能很好.
有谁遇到过同样的问题?这是一个已知的问题吗?这个问题有方法解决吗?
示例代码:http: //jsbin.com/eqile3/
这是一个带有2个手柄的滑块,1个用于min,1个用于max,在滑动事件中,这些值放在输入字段中.
请注意,当向上和向下滑动最小手柄时,最小值为11(尽管我将其设置为10),但是当从最小位置向上滑动时,它从11变为10然后是11.如果我向下滑动又一次是12到11 ......
很奇怪的错误,不确定原因在哪里?
此外,当min-handle位于从步骤0开始的第一步时,因此值为10,然后我移动max-handle,min-handle的值被正确更新.max-handle有相反的问题.
示例中的相关javascript:
$(document).ready(function(){
$('#clarityslider').slider({step:1,min:10,max:18,range:true,values:[10, 18]});
$('#clarityslider').bind('slide', function(ui, event){
valuemin = $(this).slider('values', 0);
valuemax = $(this).slider('values', 1);
$(this).next().val(valuemax);
$(this).prev().val(valuemin);
});
});
Run Code Online (Sandbox Code Playgroud) 我想通过点击而不是通过拖动滑块拇指来点击UISlider上的特定点来触发动作.
如何在某个点上点击UISlider来设置滑块值?
一段代码将不胜感激.
我正试图在UISlider中将一个额外的UIView放在拇指上方.为此,我需要拇指图像的宽度.在iOS6中,这很好用.我可以用:
CGFloat thumbWidth = self.navSlider.currentThumbImage.size.width;
Run Code Online (Sandbox Code Playgroud)
(如下所示:如何获得UISlider拇指图像的中心)
这在iOS7中返回0.0f.我也试过用它来阅读:
UIImage *thumb = [self.navSlider thumbImageForState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
但拇指结束为零.
是否可以读取默认滑块拇指图像的大小?或者我必须找到它,设置一个常量,以及Apple如何在以后不改变它?
我正在尝试实现一个控件来显示视频的进度,我正在使用带有自定义拇指图像的UISlider,但拇指图像不是从头开始,也不会一直持续到最后.
playerProgress = UISlider(frame: CGRectMake((btnImage.size.width + 2 * VideoViewControllerUX.ControlPadding), 0, (screenRect.size.width - (btnImage.size.width + 3 * VideoViewControllerUX.ControlPadding)), btnImage.size.height))
playerProgress.setThumbImage(UIImage(named: "slider"), forState: UIControlState.Normal)
playerProgress.maximumValue = 100
playerProgress.minimumValue = 0
playerProgress.addTarget(self, action: "playerProgressChanged:", forControlEvents: UIControlEvents.ValueChanged)
Run Code Online (Sandbox Code Playgroud)

我不知道最近发生了什么.
拇指图像: 
我正在尝试更改UISlider的高度。这是我目前正在做的:
class CustomSlider: UISlider {
override func trackRect(forBounds bounds: CGRect) -> CGRect {
var newBounds = super.trackRect(forBounds: bounds)
newBounds.size.height = 20.0
return newBounds
}
@IBInspectable var thumbImage: UIImage? {
didSet {
setThumbImage(thumbImage, for: .normal)
}
}
@IBInspectable var thumbHighlightedImage: UIImage? {
didSet {
setThumbImage(thumbImage, for: .highlighted)
}
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎在大多数情况下都有效,但是我遇到一个问题,当滑块移到末尾时,就不再舍入,如下图所示:
有什么办法解决这个问题?我更愿意使用系统滑块,而不是自定义滑块。
编辑:更改图像。
uislider ×10
ios ×6
iphone ×6
swift ×2
avplayer ×1
cocoa-touch ×1
ios8 ×1
jquery ×1
jquery-ui ×1
objective-c ×1
performance ×1
sdk ×1
slider ×1
xcode ×1