iPhone自定义UISlider预加载和圆angular边缘问题

我试图实现一个自定义的UISlider,我已经扩展它与一个名为UISliderCustom类具有以下代码:

@implementation UISliderCustom - (id)initWithCoder:(NSCoder *)aDecoder{ if(self == [super initWithCoder:aDecoder]){ self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, 200, 13); UIImage *slideMin = [[UIImage imageNamed:@"slideMinimum.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)]; UIImage *slideMax = [[UIImage imageNamed:@"slideMaximum.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)]; [self setThumbImage:[UIImage imageNamed:@"slideThumb.png"] forState:UIControlStateNormal]; [self setThumbImage:[UIImage imageNamed:@"slideThumb.png"] forState:UIControlStateHighlighted]; [self setMinimumTrackImage:slideMin forState:UIControlStateNormal]; [self setMaximumTrackImage:slideMax forState:UIControlStateNormal]; } return self; } @end 

我遇到了两个小问题

  1. 当我滑动滑块到其中一个边缘(progress = 0.0 / progress = 1.0)时,我可以清楚地看到两侧的“left overs”,不知道该怎么处理,不幸:)

    滑块图像: 在这里输入图像说明在这里输入图像说明在这里输入图像说明

    问题:

    坏滑块边缘

  2. 我看到了常规的UISlider(蓝色和silverlight)几秒钟,只有自定义graphics加载,或者当我实际上移动滑块。 我不知道为什么会发生这种情况.. 编辑:这只发生在模拟器,现在工作正常。

在此先感谢您的帮助:)
夏嘉曦。

你不需要为了达到这个效果而inheritanceUISlider,如果你确实不会在drawRect方法中设置轨道图像的话。 drawRect应该只包含绘图代码,只要控件的任何部分需要重绘,就会调用它。

在你的子类(从initWithFrame和initWithCoder中调用)中或者在首先创build滑块的对象中,以独立方法设置缩略图和跟踪图像。 这只需要一次,当滑块第一次创build。 不要重写drawRect。

你不需要手动调用awakeFromNib,除非你有一些特定的代码呢? 如果您只使用IB的滑块,那么这将是在子类中设置自定义图像的常用位置。

对于正方形的结尾,问题是你的轨道图像的极端边缘是正方形,所以它显示在拇指周围。 使轨迹图像的两端变圆,中间有一个1px的可拉伸区域,如下所示:

在这里输入图像说明

我自己也有一个非常类似的问题。 事实certificate,我在界面生成器中添加的滑块的大小(宽度x高度)与我用来定制滑块的图像的大小不匹配。 一旦我把它们匹配起来,滑块末端的那些“剩菜”就消失了。

Interesting Posts