不正确INT值的自定义UISlider值的效果我有一个UIView
其中alpha
是from 0.8 to 0.0
它代表100 - 0
(整数值)请与目标C
当我向左滑动屏幕或有权作出增加或降低该值。但我总是错过一些值与4,如14,24等。
我知道这可能是准确性问题。但不知道如何在短时间内解决这个问题。谢谢!
这里是我的代码:
- (void) panFromLeftOrRight:(UIPanGestureRecognizer *)gestureRecognizer {
//NSLog(@"%f",_valueView.alpha);
if (_valueView.alpha > 0.8f) {
_valueView.alpha = 0.8;
return;
}
if (_valueView.alpha < 0.0) {
_valueView.alpha = 0.0;
return;
}
CGPoint point = [gestureRecognizer translationInView:_valueView];
if ((point.x - _lastX) > 10) {
_valueView.alpha -= 0.01;
_lastX = point.x;
}
if ((point.x - _lastX) < -10) {
_valueView.alpha += 0.01;
_lastX = point.x;
}
if(gestureRecognizer.state == UIGestureRecognizerStateEnded){
_lastX = 0.0;
}
float db = _valueView.alpha * 125.0f;
NSLog(@"%f",db);
NSLog(@"(%0.000f)",floor(db));
_value.text = [NSString stringWithFormat:@"%0.0f",db];
//OR
_value.text = [NSString stringWithFormat:@"%d",(int)db];
}
这里是db
结果:
2015-09-28 18:21:41.121 Rols[70691:2929217] 100.000000
2015-09-28 18:21:41.847 Rols[70691:2929217] 98.750000
2015-09-28 18:21:41.873 Rols[70691:2929217] 97.500008
2015-09-28 18:21:42.225 Rols[70691:2929217] 96.250008
2015-09-28 18:21:42.854 Rols[70691:2929217] 95.000008
2015-09-28 18:21:42.874 Rols[70691:2929217] 93.750008
2015-09-28 18:21:43.836 Rols[70691:2929217] 92.500008
2015-09-28 18:21:44.716 Rols[70691:2929217] 91.250008
所以对于97.5
,如果使用
// for nearest integer (3.4999 -> 3, 3.5 -> 4):
int result = (int)roundf(myFloat);
我失去了97
。
根本没有94
。
请不要关闭这一点,这是不一样的https://stackoverflow.com/a/8786962/291240
?你为什么乘以'125.0'?你为什么要转换为'int'呢? – Droppy
这个问题使用这个概念的侧面菜单 –
是的,就像UISlider,但值应该是countinuous整数 –