即使内容大小较大,滚动视图也不会滚动

Posted

技术标签:

【中文标题】即使内容大小较大,滚动视图也不会滚动【英文标题】:Scrollview will not scroll even with larger contentsize 【发布时间】:2013-08-08 12:15:25 【问题描述】:

遇到了一个我不明白的奇怪问题。

我将内容大小设置为我创建的名为 newSize 的 CGSize。我在 UIScrollView 中的一行中添加按钮,该按钮超出了滚动视图的框架,并更改了内容大小以匹配新的宽度 + 400 以确保安全。

    newSize.width = contentSizeWidth+400;

    NSLog(@"newSize width: %f", newSize.width);

    [_scrollViewOutlet addSubview:button];

    [_scrollViewOutlet setContentSize:newSize];

    NSLog(@"scrollviewOutlet Content Width: %f", _scrollViewOutlet.contentSize.width);

NSLog 打印出 768。在界面生成器的滚动视图中启用了滚动,但我无法滚动滚动视图?问题可能是什么?

【问题讨论】:

contentSizeWidth如何计算? _scrollViewOutlet.contentSize.width = 768.00 且 Scrollview 框架宽度为 400 那么,contentSizeWidth 有一个硬编码值吗? 它穿过一个按钮数组并且 contentsizewidth 增加如下: contentSizeWidth = (20+button.frame.size.width) * i;在滚动视图中的每个按钮之间创建一个 20 像素的间隙。 你在哪里调用上面的代码? viewDidLoad? 【参考方案1】:

这可能会有所帮助: 在提供 contentSize 之前添加按钮。

// add all buttons
// create contentSizeWidth presumably by adding all buttons height
contentSizeWidth = contentSizeWidth + buttonHeight;// repeat this for every button  
 [_scrollViewOutlet addSubview:button];

// create newSize
newSize.width = contentSizeWidth+400;

// set content size
  [_scrollViewOutlet setContentSize:newSize];

【讨论】:

【参考方案2】:

我解决了这个问题。这是一个需要在视图中取消勾选的自动布局复选框。

【讨论】:

再模糊不过了。【参考方案3】:

问题可能是frame的宽度等于contentSize的宽度。

【讨论】:

以上是关于即使内容大小较大,滚动视图也不会滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局设置滚动视图内容大小?

尽管内容大小正确,但 UIScrollview 不会滚动; textview 子视图框架也表现得很奇怪

如何根据文本视图内容大小设置滚动视图中的启用或禁用滚动?

在调整滚动视图大小时滚动到滚动视图页面

iOS页面控制滚动锁定

无法在 swift 中使用滚动视图滚动图像