UISlider 添加到 UITableViewCell 奇怪的行为
UISlider added to a UITableViewCell weird behaviour
我在故事板的单元格中添加了一个滑块。在 cellForRowAtIndexPAth:
中,我获取滑块并以编程方式向滑块的拇指添加标签,然后 return 单元格。代码如下
UISlider *forceDelaySlider = (UISlider *)[cell1 viewWithTag:102];
forceDelaySlider.minimumValue = 0.0;
forceDelaySlider.maximumValue = 10.0;
forceDelaySlider.value = [Settings sharedInstance].forceDelay;
[forceDelaySlider addTarget:self action:@selector(forceDelaySliderChanged:) forControlEvents:UIControlEventValueChanged];
UIImageView *handleView = [forceDelaySlider.subviews lastObject];
if (forceDelaySliderLabel)
{
[forceDelaySliderLabel removeFromSuperview];
forceDelaySliderLabel = nil;
}
forceDelaySliderLabel = [[UILabel alloc] initWithFrame:handleView.bounds];
forceDelaySliderLabel.text = [NSString stringWithFormat:@"%0.0f", forceDelaySlider.value];
forceDelaySliderLabel.backgroundColor = [UIColor clearColor];
forceDelaySliderLabel.textAlignment = NSTextAlignmentCenter;
[forceDelaySliderLabel setTextColor:[UIColor blackColor]];
[handleView addSubview:forceDelaySliderLabel];
return cell1,
现在,当 table 出现时,滑块上的标签不会在 table loads.It 出现后出现,如下所示
上下滚动 table 视图后,带有标签的滑块显示如下
为什么会这样?我卡住了。请帮我解决这个奇怪的行为。
首次加载单元格时,[cell1 viewWithTag:102]
或 [forceDelaySlider.subviews lastObject]
return 是否显示 nil
视图?很可能两者之一在布局或渲染过程之前不存在。
而不是假设 [forceDelaySlider.subviews lastObject]
总是会成为拇指的 UIImageView
你应该子 class UISlider
并添加你自己的 UILabel
子视图。然后你可以根据你return从thumbRectForBounds:trackRect:value:
的值改变它的位置。此实现将在未来 iOS 版本中由 Apple 对 UISlider
class 进行任何重构。
我在故事板的单元格中添加了一个滑块。在 cellForRowAtIndexPAth:
中,我获取滑块并以编程方式向滑块的拇指添加标签,然后 return 单元格。代码如下
UISlider *forceDelaySlider = (UISlider *)[cell1 viewWithTag:102];
forceDelaySlider.minimumValue = 0.0;
forceDelaySlider.maximumValue = 10.0;
forceDelaySlider.value = [Settings sharedInstance].forceDelay;
[forceDelaySlider addTarget:self action:@selector(forceDelaySliderChanged:) forControlEvents:UIControlEventValueChanged];
UIImageView *handleView = [forceDelaySlider.subviews lastObject];
if (forceDelaySliderLabel)
{
[forceDelaySliderLabel removeFromSuperview];
forceDelaySliderLabel = nil;
}
forceDelaySliderLabel = [[UILabel alloc] initWithFrame:handleView.bounds];
forceDelaySliderLabel.text = [NSString stringWithFormat:@"%0.0f", forceDelaySlider.value];
forceDelaySliderLabel.backgroundColor = [UIColor clearColor];
forceDelaySliderLabel.textAlignment = NSTextAlignmentCenter;
[forceDelaySliderLabel setTextColor:[UIColor blackColor]];
[handleView addSubview:forceDelaySliderLabel];
return cell1,
现在,当 table 出现时,滑块上的标签不会在 table loads.It 出现后出现,如下所示
上下滚动 table 视图后,带有标签的滑块显示如下
为什么会这样?我卡住了。请帮我解决这个奇怪的行为。
首次加载单元格时,[cell1 viewWithTag:102]
或 [forceDelaySlider.subviews lastObject]
return 是否显示 nil
视图?很可能两者之一在布局或渲染过程之前不存在。
而不是假设 [forceDelaySlider.subviews lastObject]
总是会成为拇指的 UIImageView
你应该子 class UISlider
并添加你自己的 UILabel
子视图。然后你可以根据你return从thumbRectForBounds:trackRect:value:
的值改变它的位置。此实现将在未来 iOS 版本中由 Apple 对 UISlider
class 进行任何重构。