gpt4 book ai didi

ios - 缩略图不会移动到 UISlider 的边缘

转载 作者:技术小花猫 更新时间:2023-10-29 11:16:55 25 4
gpt4 key购买 nike

即使值为最大值或最小值,缩略图也不会移动到边缘。

有谁知道如何让它一直移动到 slider 的边缘?

enter image description here

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UISlider *slider;
@end

@implementation ViewController
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UIImage* sliderBarMinImage = [[UIImage imageNamed:@"slider_bar_3_min"] stretchableImageWithLeftCapWidth:8.0 topCapHeight:0.0];
UIImage* sliderBarImage = [[UIImage imageNamed:@"slider_bar_3_max"] stretchableImageWithLeftCapWidth:8.0 topCapHeight:0.0];
UIImage* sliderThumbImage= [[UIImage imageNamed:@"slider_thumb_3"] stretchableImageWithLeftCapWidth:8.0 topCapHeight:0.0];

[self.slider setMinimumTrackImage:sliderBarMinImage forState:UIControlStateNormal];
[self.slider setMaximumTrackImage:sliderBarImage forState:UIControlStateNormal];
[self.slider setThumbImage:sliderThumbImage forState:UIControlStateNormal];
}
@end

最佳答案

您看到的显然是 UISlider 按照设计工作。

默认情况下,在极值处,拇指的边缘与轨道的边缘对齐,而不是拇指的中心位于轨道的边缘。因此,如果您提供左右边缘不透明的拇指图像,这就会成为一个问题,因为这样下方的轨道就会变得可见。

一个部分修复是重写 thumbRectForBounds(_:trackRect:value:),这样拇指的中心就可以跨越 slider 的宽度。下面的代码显示了这一点:

class CenteredThumbSlider : UISlider {
override func thumbRectForBounds(bounds: CGRect, trackRect rect: CGRect, value: Float) -> CGRect
{
let unadjustedThumbrect = super.thumbRectForBounds(bounds, trackRect: rect, value: value)
let thumbOffsetToApplyOnEachSide:CGFloat = unadjustedThumbrect.size.width / 2.0
let minOffsetToAdd = -thumbOffsetToApplyOnEachSide
let maxOffsetToAdd = thumbOffsetToApplyOnEachSide
let offsetForValue = minOffsetToAdd + (maxOffsetToAdd - minOffsetToAdd) * CGFloat(value / (self.maximumValue - self.minimumValue))
var origin = unadjustedThumbrect.origin
origin.x += offsetForValue
return CGRect(origin: origin, size: unadjustedThumbrect.size)
}
}

但是,我想说这只是一个部分修复,因为我不相信这也会修改拇指点击区域的位置,所以上面的这个修复有一个不幸的副作用拇指比默认情况下更不容易触摸,因为 slider 仍然会更多地监听 slider 中心的触摸。

关于ios - 缩略图不会移动到 UISlider 的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21520940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com