我的 UIScrollView 出现了一个奇怪的界面错误,我不知道如何解决它。我只写了一行代码(如下所示),这是一个空白项目的设置,很容易重现!
环境:
我有一个UIScrollView
包含一个UISegmentedControl
(因为控件的段是动态加载的,它可能超过屏幕的宽度,并且scrollView应该水平滚动segmentedControl,scrollview的高度与UISegmentedControl的高度相同)。包含此内容的 ViewController 嵌入在 tabBar(或导航栏,也显示错误)中。整个事情是使用自动布局。
漏洞:
当我将 SegmentedControl 向右滚动一定程度,然后通过单击 tabBarController 上的另一个选项卡来切换视图控制器时,当切换回初始视图控制器时,分段控件的内容偏移量会奇怪地移动。当我尝试滚动到滚动视图的最左侧时,它不会让我这样做。切换几次选项卡时,它又被修复了,我可以重新做一遍。
我做了什么(你能重现这个吗?):
- 创建一个空白的单视图ios项目
- 将已经给定的 viewController 嵌入到 tabbarcontroller 中。
- 在从左到右适合屏幕的视图上部放置一个滚动视图。
- 在滚动视图的左上角放置一个 UISegmentedControl 并拖动滚动视图以适应分段控件的高度高度
- 稍微更改分段控件的宽度,以便 xcode 添加宽度约束。在分段控件的宽度约束中,将宽度约束的关系更改为“大于或等于”
- 为分段控件创建一个出口
在 viewDidload 添加此代码
[self.segmentedControl insertSegmentWithTitle:@"A really long title so it you have to scroll to see it" atIndex: 0 animated: NO];
创建一个空白视图控制器并将其添加为 tabbarController 的第二个视图控制器。
这就是我的故事板的样子:
现在运行项目,将分段控件滚动到它的右端。切换选项卡并切换回来,请告诉我您的滚动视图现在的行为方式 - 以及为什么。
我的猜测可能与自动布局有关?虽然想不通是什么。
我尝试通过在 viewDidAppear 中设置 scrollView 的 contentSize 或在 viewDidAppear 中更改 scrollView 的内容偏移量或更改帧、这些的组合以及其他什么来解决这个问题......
额外的问题:
是否不再需要设置 scrollViews contentSize 属性?为什么它会自动滚动内容?