带有自动布局的 UIScrollView 中的 UITableViews

Posted

技术标签:

【中文标题】带有自动布局的 UIScrollView 中的 UITableViews【英文标题】:UITableViews within a UIScrollView with Autolayout 【发布时间】:2013-06-10 14:05:18 【问题描述】:

我正在尝试使用 ios6 和自动布局将 UITableViews 嵌入到 UIScrollView 中。

在 iOS 6 之前,我已经多次使用支柱和弹簧。我将表格视图添加为我的滚动视图的子视图,设置适当的框架和内容大小。它工作得很好,允许用户在表格视图之间滚动,但它不再适用于 iPhone 5 的 3.5" 屏幕和 4" 屏幕。

scrollview 的高度已正确调整大小,但 subviews 的高度未正确调整,并且在 4" 屏幕上它们下方有一个空白区域。

我在 IB 中创建了 ViewController,添加了 UIScrollView,然后以编程方式添加了表格视图。

我找到了一种解决方法,即在 -viewDidAppear 方法中设置框架和大小,但它会导致滚动视图闪烁,因为它是在向用户呈现视图控制器后修改的。

我目前正在研究 NSLayoutConstraint,目前还没有取得多大成功。

有人遇到过同样的问题吗?

这是我当前的代码:

- (void)viewDidLoad

    [super viewDidLoad];
    [self composeScrollView];


- (void)composeScrollView 
    // set up scrollview
    CGSize scrollViewContentSize = _scrollView.bounds.size;
    scrollViewContentSize.width *= self.tableViewsList.count;
    _scrollView.contentSize = scrollViewContentSize;

    CGPoint contentOffset = _scrollView.bounds.origin;
    contentOffset.x = _scrollView.bounds.size.width * self.tableIndex;
    _scrollView.contentOffset = contentOffset;

    _scrollView.directionalLockEnabled = YES;

    for (int i = 0; i < self.tableViewsList.count; i++)         
        CGRect tableViewRect = _scrollView.bounds;
        tableViewRect.origin.x = tableViewRect.size.width *i;

        UITableView *tableView = [[UITableView alloc] initWithFrame:tableViewRect style:UITableViewStylePlain];
        tableView.delegate = self;
        tableView.dataSource = self;
        tableView.directionalLockEnabled = YES;

        [_scrollView addSubview:tableView];
    

我在很多 iOS 应用中都看到过这种布局,所以我想这个解决方案可能对我们很多人有用。

我想添加更明确的图片,但我没有足够的声誉。

【问题讨论】:

【参考方案1】:

自动布局尚未在viewDidLoad 中设置框架。在viewDidAppear 中有,所以现在一切正常。做这种事情的最佳方法是viewDidLayoutSubviewsviewWillLayoutSubviews

【讨论】:

看看***.com/questions/16096021/…或***.com/questions/16699920/…也。

以上是关于带有自动布局的 UIScrollView 中的 UITableViews的主要内容,如果未能解决你的问题,请参考以下文章

我的带有自动布局约束的 Swift 4 UIScrollView 没有滚动

UIScrollView 中的自动布局使用 Cirrious.FluentLayouts.Touch

尝试理解 iOS 8 中的 UIScrollView 自动布局

带有自动布局的 uiscrollview 的动态内容未按预期工作

UIScrollView 在带有自动布局的 UITabBarController 中有一个无法解释的位置

带有自动布局的 UIScrollView:后代在查看区域之外,但视图不滚动