UiTableView在横向模式下不提供水平滚动。
我的UiTableView不是全屏的(所以我不能在旋转我的内容时使用它的水平模式,这是图片)
我发现要使用变换来旋转我的UiTableView ..我必须在Interface Builder中将其放置在某个奇怪的位置,以便旋转时,它看起来是正确的.....
有没有人做到这一点而不去摆弄界面生成器呢?相同的代码?
发布于 2012-11-20 21:26:12
好吧,问题是由于表格视图的宽度是灵活的,在旋转之后,单元格的宽度(即实际高度)也增加了。我通过将UITableView子类化并覆盖layoutSubviews方法克服了这个问题,因此它现在看起来像这样:
- (void)layoutSubviews {
[super layoutSubviews];
for (UIView* child in [self subviews]) {
CGRect frame1 = child.frame;
if ([child isKindOfClass:[UITableViewCell class]]) {
frame1.size.width = 120;
child.frame = frame1;
}
}
}发布于 2009-05-17 19:10:06
请参阅苹果网站上Windows and Views概念指南中的自动调整大小行为部分。这就解释了如何在不使用Interface Builder的情况下实现从纵向到横向的自动旋转,也不必手动实现复杂的转换。
至于旋转自定义内容和禁用滚动,请参阅UIViewController中的shouldAutorotateToInterfaceOrientation:interfaceOrientation、willRotateToInterfaceOrientation:duration:和didRotateFromInterfaceOrientation:。你可以实现这些方法来拦截旋转事件,检查你要移动到哪个方向,并在那里处理你的自定义绘图和属性设置。
编辑
作为对你的评论的回应,我从苹果的Table View Programming Guide中发现了这一点:
UITableView继承自UIScrollView,它定义了内容大于窗口大小的视图的滚动行为。UITableView重新定义了滚动行为,只允许垂直滚动。
也许苹果认为表格视图的水平滚动与他们的人性化界面准则相违背。我想知道,如果你子类化了UITableView,你是否可以重新定义滚动行为,但这可能会有大量的试验和错误工作。如果你真的能够做到这一点,我相信这里的许多人都会对你是如何做到的感兴趣的。我四处寻找了一段时间,试图找到别人的解决方案,但我什么也找不到。
再说一次,如果你这样做了,苹果可能不会允许你的应用程序进入应用程序商店,假设它真的破坏了HIG。
发布于 2010-09-01 19:35:52
您可以通过执行以下操作来实现您正在寻找的目标:
通过代码或通过IB (请勿使用UITableViewController)
In:
布姆!现在,您得到了一个带有垂直单元格的水平滚动表格。您可能必须更正单元格和表格的宽度和高度,以使所有内容看起来都正确,但我想这可能会对您有所帮助。
另一个提示:您可以使用表格的图层来控制旋转的中心点。anchorPoint属性(它是一个CGPoint)。如果将其设置在视图边界中心以外的其他位置,则旋转效果(和任何其他效果)将使用该点作为参考。
https://stackoverflow.com/questions/875240
复制相似问题