18

主要目标是能够水平滚动每一行的内容。

我正在尝试使用 X Code 5 并使用 StoryBoard 来做到这一点。

问题似乎很简单,但是经过数小时的搜索后,除了一个有点相似但仅使用编程方法的问题外,我什么也没得到,请参见此处

在 IB 中,我的结构如下面的设计所示。 查看结构

  • 在 IB 和代码中设置为 {5000, 500} 的滚动视图的内容大小
  • 滚动视图框架为 {0,0}{320,44}
  • 标签框架设置为 {20,0}{500,44}

我还在github 存储库中提供了一个示例项目。该示例还包括在 uitableviewcell 之外工作的“正常”滚动视图。

请说我忽略了一些非常基本的东西。

4

8 回答 8

8

Another alternative for this is to use UICollectionView inside a custom UITableViewCell

于 2014-01-30T23:07:24.743 回答
6

Autolayout is activated (and that's a good thing) in your storyboard. The scrollable size of a UIScrollView is computed based on the constraints of its subviews.

So you need to add "top, bottom, leading, trailing space to superview" on the UIImageView inside the UIScrollView. They can be all set to 0.

Now if you don't add any constraint to the UIImageView then its intrinsicContentSize size will be used.

Your constraints should look like this:

autolayout constraints

Note that you were also missing constraints on the content view of your cell.

When you're done with the constraints, remove all the setContentSize: calls from your code.

于 2014-01-30T12:18:53.140 回答
2

我遇到了同样的问题,发现删除滚动视图的内容视图并再次添加它可以工作:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.label removeFromSuperview];
    [self.scrollView addSubview:self.label];
    self.scrollView.contentSize = self.label.frame.size;
}

这不是最优雅的解决方案,但它对我有用。

于 2013-10-25T18:19:34.443 回答
1

确保在和 中setContentSize被调用。在 iOS6 中,如果您没有这些方法中的代码,则默认行为可以正常工作,在带有新布局系统的 iOS7 中,它们是必需的。它可能会被多次调用以进行设置,只需继续调用.viewDidLayoutSubviewsscrollViewDidEndZooming:withView:atScale:setContentSize

于 2013-10-21T14:11:00.893 回答
0

凭借其新的自动布局模式,iOS 7 似乎打破了许多使用 UIScrollView 的 iOS 6 及更早版本的应用程序。我最近发布了一个类似的问题[现在被版主搁置 - 所以你可能看不到它]用户 Lv.BeLeCk 使用以下方法找到了成功:

self.automaticallyAdjustsScrollViewInsets = NO;

在持有滚动视图的视图控制器中。只需将它放在滚动视图的实例化之后。看看这是否有效,如果有效,请支持他的贡献。

我认为根本原因是在实例化时 UIScrollViews 现在正在根据它们当前的内容更新它们的大小,而不是之前他们只是把它们留在地狱里。

我不知道为什么苹果想搞砸。我仍在等待多行标签的顶部和底部对齐!

于 2013-10-04T17:42:26.980 回答
0

我通过 IB 解决了这种情况。

我必须在“标识值部分 - 用户定义的运行时属性”中具有相同的值,其中关键“帧 - 矩形 - CGRectValue”等于“大小检查器 - 视图值”。

我希望这对你有帮助。

于 2013-11-26T18:36:48.973 回答
0

我今天也有同样的问题。几个小时后继续查找,通过将单元格的选择从无更改回默认值来解决。希望它会帮助其他人。

于 2013-12-12T10:04:34.170 回答
0

我无法Storyboard使用我的 xCode 4 访问您的 .

首先,您应该将UITableView与您的ViewController. UITableViewCell是在你的UITableView. 这就是为什么您应该尝试更改UITableView. 连接后,您应该尝试像这样更改contentinset您的UITableView

[self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 2500, 2500)];

如果这不起作用,您还可以尝试更改 TableView 的内容大小。也许你还必须改变你的大小UIView才能工作。

于 2013-10-04T16:22:54.110 回答