繁体   English   中英

iOS 7.1中的UISlider setMaximumTrackTintColor

[英]UISlider setMaximumTrackTintColor in iOS 7.1

[slider setMaximumTrackTintColor: color]

在iOS 7.1中具有出乎意料的结果(滑块更改了其位置,而不是垂直居中显示在顶部,或者完全消失了),同时在以前的版本中可以正常工作。

[slider setMinimumTrackTintColor: color]

确实呈现了预期的结果。

这个问题可能是相关的: UISlider setMaximumTrackTintColor ,但到目前为止没有答案。

更新:

我得到这个: 错误 代替: 在此处输入图片说明

更新#2:

使用setMaximumTrackImage可能会起作用,但是我正在寻找的解决方案是一种设置任何随机颜色而不是现有图像的方法。

更新#3:

此问题在iOS 7.1.1中仍然存在。

发现此工作方式:

快速UIImage UIColor创建1x1px UIImage

CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
[color setFill];
UIRectFill(rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

接着

[slider setMaximumTrackImage:image forState:UIControlStateNormal];

看起来像一个昂贵的解决方案,但可以完成工作。

试试看:

UIImage *sliderLeftTrackImage = [[UIImage imageNamed:@"LeftImage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
UIImage *sliderRightTrackImage = [[UIImage imageNamed:@"RightImage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

[sliderName setMinimumTrackImage: sliderLeftTrackImage forState: UIControlStateNormal];
[sliderName setMaximumTrackImage: sliderRightTrackImage forState: UIControlStateNormal];

如果您想更改缩略图,可以使用以下代码:

[sliderName setThumbImage:[UIImage imageNamed:@"ThumbImgName.png"] forState:UIControlStateNormal];
[sliderName setThumbImage:[UIImage imageNamed:@"ThumbImgName.png"] forState:UIControlStateHighlighted];

同样,您也可以使用颜色代替图像。

更新资料

报告了此错误,并且已经众所周知。 希望他们会尽快修复...

我用滑块轨道的颜色创建了2px的图像。

在此处输入图片说明

然后将它们设置为跟踪图像(这是iPad和iPhone的缩略图)

UIImage *thumbImage = [UIImage imageNamed:@"slider"];
UIImage *trackImage;

if (isiPad) {
    [[UISlider appearance] setThumbImage:thumbImage forState:UIControlStateNormal];
    [[UISlider appearance] setThumbImage:thumbImage forState:UIControlStateHighlighted];
    trackImage = [UIImage imageNamed:@"menu-bar-ipad"];
}
else {
    [[UISlider appearance] setThumbImage:[self imageWithImage:thumbImage scaledToSize:CGSizeMake(27, 27)] forState:UIControlStateNormal];
    [[UISlider appearance] setThumbImage:[self imageWithImage:thumbImage scaledToSize:CGSizeMake(27, 27)] forState:UIControlStateHighlighted];
    trackImage = [UIImage imageNamed:@"menu-bar"];
}

[[UISlider appearance]  setMinimumTrackImage:trackImage forState:UIControlStateNormal];
[[UISlider appearance]  setMaximumTrackImage:trackImage forState:UIControlStateNormal];

就这样。 我猜想与msmq相同的解决方案。 您会看到两种制作大图像的方式-两个图像方式和缩放方式。

也许有点晚了,但是-这是答案

您应该阅读二传手的描述:

用于为标准最大轨道图像着色的颜色。 设置此属性将删除与滑块关联的所有自定义最大轨道图像。

这也仅适用于maximum color ,因为minimum设置器仅更改titntColor:

用于为标准最小轨道图像着色的颜色。

这意味着滑块会使用一些图像来获得最大的跟踪效果,如果您只是设置色调颜色,则什么都不会改变(不能着色)。

在此处输入图片说明

解决方案(由于@ user623396):

UIImage *currentSliderMaximumImage = self.slider.currentMaximumTrackImage;

CGRect rect = CGRectMake(0, 0, currentSliderMaximumImage.size.width, currentSliderMaximumImage.size.height);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
[[[DynamicUIService service] currentApplicationColor] setFill];
UIRectFill(rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.slider setMaximumTrackImage:image forState:UIControlStateNormal];

结果你会得到

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM