主要目标是能够水平滚动每一行的内容。
我正在尝试使用X Code 5并使用StoryBoard。
这个问题似乎很简单,但经过几个小时的搜索后,除了一个有点类似但只使用程序化方法see here的问题外,我什么都没有。
在IB中,我的结构如下面的设计所示。
我还提供了example project in a github repository。该示例还包括在uitableviewcell外部工作的“普通”滚动视图。
请说我忽略了一些非常基本的东西。
答案 0 :(得分:8)
另一种替代方法是在自定义UITableViewCell
中使用UICollectionView答案 1 :(得分:6)
在故事板中激活Autolayout(这是一件好事)。 UIScrollView的可滚动大小是根据其子视图的约束计算的。
因此,您需要在UIScrollView内的UIImageView上添加“topview,bottom,leading,trailing space to superview”。它们都可以设置为0。
现在,如果你没有向UIImageView添加任何约束,那么将使用其intrinsicContentSize大小。
您的约束应如下所示:
请注意,您还缺少对单元格内容视图的约束。
完成约束后,从代码中删除所有setContentSize:调用。
答案 2 :(得分:2)
我遇到了同样的问题,发现删除scrollview的内容视图并再次添加它会起作用:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.label removeFromSuperview];
[self.scrollView addSubview:self.label];
self.scrollView.contentSize = self.label.frame.size;
}
这不是最优雅的解决方案,但它对我有用。
答案 3 :(得分:1)
凭借其新的自动布局模式,iOS 7似乎打破了许多使用UIScrollView的iOS 6及更早版本的应用程序。我最近发布了一个类似的问题 [现在被版主暂停 - 所以你可能无法看到它] 用户Lv.BeLeCk在哪里找到了成功:
self.automaticallyAdjustsScrollViewInsets = NO;
在持有scrollview的视图控制器中。只需将它放在滚动视图的实例化之后。看看是否有效,如果确实如此,请赞成他的贡献。
我认为根本原因是在实例化时,UIScrollViews现在根据它们当前的内容更新它们的大小,而不是之前它们只是将它们留给了地狱。
为什么Apple想用我不知道的东西捣乱。我还在等待多行标签的顶部和底部对齐!
答案 4 :(得分:1)
确保在setContentSize
和viewDidLayoutSubviews
中调用scrollViewDidEndZooming:withView:atScale:
。在iOS6中,如果您没有这些方法中的代码,默认行为可以正常工作,在具有新布局系统的iOS7中,它们是必需。对于设置,可能会多次调用它,只需继续调用setContentSize
。
答案 5 :(得分:0)
我无法使用我的xCode 4访问您的Storyboard
。
首先,您应该将UITableView
与ViewController
相关联。 UITableViewCell
位于UITableView
内。这就是为什么你应该尝试更改UITableView
的设置。连接后,您应该尝试更改contentinset
的{{1}},如下所示:
UITableView
如果这不起作用,您还可以尝试更改TableView的内容大小。也许您还必须在[self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 2500, 2500)];
工作之前更改其大小。
答案 6 :(得分:0)
我通过IB解决了这个问题。
我必须在“身份值部分 - 用户定义的运行时属性”中使用相同的值,其中“frame - Rect - CGRectValue”等于“Size inspector - View values”。
我希望这对你有所帮助。
答案 7 :(得分:0)
我今天遇到同样的问题。 几个小时后继续查找,通过将单元格的选择更改回默认值来解决。 希望它能帮助其他人。