gpt4 book ai didi

ios - UISlider 添加到 UITableViewCell 奇怪的行为

转载 作者:行者123 更新时间:2023-11-29 12:24:19 24 4
gpt4 key购买 nike

我在 Storyboard的单元格中添加了一个 slider 。在 cellForRowAtIndexPAth: 中,我获取 slider 并以编程方式向 slider 的 slider 添加标签,然后返回单元格。代码如下

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,

现在当表格出现时, slider 上的标签不会在表格加载后出现。它看起来很简单,如下所示

Plain slider

上下滚动表格 View 后,带有标签的 slider 如下所示 Slider with label

为什么会这样?我卡住了。请帮我解决这个奇怪的行为。

最佳答案

[cell1 viewWithTag:102][forceDelaySlider.subviews lastObject] 是否在首次加载单元格时返回 nil View ?很可能两者之一在布局或渲染过程之前不存在。


与其假设 [forceDelaySlider.subviews lastObject] 始终是拇指的 UIImageView,不如将 UISlider 子类化并添加你自己的 UILabel subview 。然后你可以根据你从 thumbRectForBounds:trackRect:value: 返回的值改变它的位置.此实现将在未来 iOS 版本中由 Apple 对 UISlider 类进行任何重构。

关于ios - UISlider 添加到 UITableViewCell 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703654/

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