gpt4 book ai didi

ios - 如何在 UISlider 的自定义子类中更改 UISlider 的默认值,以便我可以多次重用它

转载 作者:行者123 更新时间:2023-11-28 22:15:33 28 4
gpt4 key购买 nike

目前我正在对 UISlider 进行子类化,并在 drawRect 中设置默认值。我得到了一个奇怪的结果。

slider 最小图像位于正确位置,但 slider 最大图像左侧有空白。中间的 slider 图像位于最右侧,maximumTackTintColor 的颜色位于 slider 的两侧。

- (void)drawRect:(CGRect)rect
{
// Drawing code
self.minimumTrackTintColor = [ThemeManager minimumTrackTintColorForSlider];
self.maximumTrackTintColor = [ThemeManager maximumTrackTintColorForSlider];
self.minimumValueImage = [UIImage imageNamed:@"sliderLeftDot"];
self.maximumValueImage = [UIImage imageNamed:@"sliderRightDot"];

[self setThumbImage:[UIImage imageNamed:@"sliderCentrePiece"] forState:UIControlStateNormal];

}

最佳答案

您没有调用 [super drawRect:rect],这会导致幻灯片永远无法正确绘制,但是您应该永远覆盖 drawRect: 除非您需要执行自定义绘图。

初始化默认值的正确位置是指定的初始化程序。作为 UISlider 的子类 UIView,您需要重写 -initWithFrame:-initWithCoder:,以处理以编程方式或通过 Nib 创建 slider 的两种情况。

例如

- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self commonInit];
}
return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
[self commonInit];
}
return self;
}

- (void)commonInit {
self.minimumTrackTintColor = [ThemeManager minimumTrackTintColorForSlider];
self.maximumTrackTintColor = [ThemeManager maximumTrackTintColorForSlider];
self.minimumValueImage = [UIImage imageNamed:@"sliderLeftDot"];
self.maximumValueImage = [UIImage imageNamed:@"sliderRightDot"];
[self setThumbImage:[UIImage imageNamed:@"sliderCentrePiece"] forState:UIControlStateNormal];
}

关于ios - 如何在 UISlider 的自定义子类中更改 UISlider 的默认值,以便我可以多次重用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21813884/

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