我有一些代码可以创建一个带滑块的表格单元格。它非常简单,在iPhone上尺寸很好。我在这里稍微匿名了一下:
UITableViewCell* cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foo"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
CGRect contentViewFrame = cell.contentView.frame;
CGRect sliderFrame = CGRectMake(10, 0, 280, contentViewFrame.size.height);
UISlider* slider = [[UISlider alloc] initWithFrame:sliderFrame];
UIImage* minimumImage = [UIImage imageNamed:@"min.png"];
UIImage* maximumImage = [UIImage imageNamed:@"max.png"];
slider.minimumValueImage = minimumImage;
slider.maximumValueImage = maximumImage;
slider.value = 0.5f;
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:slider];
[slider release];
当然,iPad尺寸不正确。所以我的第一个想法是将autoresizingMask
属性设置为UIViewAutoresizingFlexibleWidth
。问题解决了吧?不。现在在iPhone上,滑块加图像内容的宽度小于280,因此它不会直到最后 - 最终缩短约20像素。
在iPad上,同样的事情 - UISlider
的宽度自动调整为距离单元格末尾约20个像素。
也许自动调整大小标志正在关注单元格中不存在的accessoryView
?我尝试明确地将其设置为nil
,但我认为默认情况下它是nil
,因此没有任何变化。
我希望此单元格的内容自动调整为单元格的“完整”宽度,无论设备和方向如何。有没有简单的方法呢?
答案 0 :(得分:10)
它完全按照你描述的方式工作。我倾向于认为这是iOS错误。在iPAD上创建新的UITableViewCell时,其宽度设置为320.硬编码(!)视图和contentView。如果设置为UIViewAutoresizingFlexibleWidth
,则无法正确调整大小。我把它设置为view.frame.size.width / 2,结果很有趣:在iPhone上它是160,在iPad上它是608!
我最终手动调整了我的单元格及其内容的大小。
答案 1 :(得分:6)
有点迟了但我今天找到了同样问题的解决方案,但你需要创建一个自定义的UITableViewCell。 然后你可以覆盖函数
- (void) layoutSubviews
{
[dateLabel setFrame:CGRectMake(10.f, 16.f, 80.f, 12.f)];
[textLabel setFrame:CGRectMake(106.f, 16.f, contentView.frame.size.width-105.f + 1.f, 12.f)];
}
在该函数中,self.frame.size.width是实际的 它也适用于设备的旋转。
答案 2 :(得分:3)
你应该能够告诉调整大小系统将物体“粘住”在距离右边缘一定距离的位置(它没有足够大的尺寸)。如果您使用IB进行实验,则可以创建一个在宽度上调整大小并固定在右侧的视图。
您是否也设置了UIViewAutoresizingFlexibleRightMargin?
答案 3 :(得分:3)
将您的手机contentMode
设置为UIViewContentModeRedraw
。