UISlider 根据设备改变宽度
Posted
技术标签:
【中文标题】UISlider 根据设备改变宽度【英文标题】:UISlider changing width depending on device 【发布时间】:2012-10-14 16:48:11 【问题描述】:我是 ios 编程的初学者,我正在寻找我的问题的答案。
我在 UITableViewCell 中有一个 UISlider,我正在尝试获得这种配置:Label-Slider-DetailLabel(dynamic)。
这是我的代码:
cell = [tableView dequeueReusableCellWithIdentifier:@"SelectedMeetingCell"];
[cell.textLabel setText:@"Duration"];
[cell.detailTextLabel setText:[Utilities StringFromDuration:Agenda.InitialDuration.doubleValue]];
sliderCell = (SliderCell*)[[UIViewController alloc] initWithNibName:@"SliderCell" bundle:nil].view;
[sliderCell setDelegate:self];
[sliderCell.slider setValue:Agenda.InitialDuration.doubleValue];
[cell.contentView addSubview:sliderCell];
sliderCell.slider.frame = CGRectMake(100, 0, 500, 44);
最后一行是我用来按我想要的方式放置滑块的方式。它适用于 iPad,但不适用于 iPhone 版本。有什么方法可以根据设备自动调整滑块的宽度吗?
(SliderCell 是带有 UISlider @property 的 UITableViewCell)
提前谢谢大家!
【问题讨论】:
将随机视图控制器的视图附加到高度动态的 UITableViewCell 不是一个好主意。 有什么办法可以有这种性格? 有人有想法吗? 为什么不直接将自定义滑块添加到单元格内容视图,而不是添加具有滑块的 UITableViewCell。 我刚刚收回我的本科项目的代码,我只需要更改某些元素的设计和配置。在这里,如果我理解,我是在叠加两个视图? 【参考方案1】:您可以获取容器视图宽度并将滑块宽度设置为它的百分比,而不是对值进行硬编码。
CGRect superViewFrame = slider.superView.frame;
CGRect sliderFrame = slider.frame;
sliderFrame.size.width = <your choice for eg, superViewFrame.size.width * 0.3f>
sliderFrame.origin.x = <your choice for eg, superViewFrame.size.width * .2f>
slider.frame = sliderFrame;
【讨论】:
但是如何只获得滑块宽度? 好吧,现在的问题是从 iPad 到 iPhone 的 x 位置问题……我想我也要做一个百分比! 再次将 x 位置设置为您的超级视图宽度的百分比将解决我猜的问题。【参考方案2】:您可以通过调用self.view
获取设备的大小
sliderCell.slider.frame = CGRectMake(100, 0, self.view.frame.size.width, self.view.frame.size. height);
根据视图的大小,您可能想要减去或除以
【讨论】:
以上是关于UISlider 根据设备改变宽度的主要内容,如果未能解决你的问题,请参考以下文章