【问题标题】:UISlider changing width depending on deviceUISlider 根据设备改变宽度
【发布时间】: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。
  • 我刚刚收回我的本科项目的代码,我只需要更改某些元素的设计和配置。在这里,如果我理解,我是在叠加两个视图?

标签: iphone ios ipad uitableview uislider


【解决方案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);

根据视图的大小,您可能想要减去或除以

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多