Tag: 布局Ios

iOS 11中具有自动布局的程序化UIScrollview

我已经仔细阅读了Apple在UIScrollView上的文档,尤其是它如何与auto layout ,我更喜欢编程路径。 我将演示UIScrollViews的“混合”和“纯”自动布局方法。 您是否知道UIScrollView类通过更改其边界的原点来滚动其内容? 酷吧! 滚动视图的子视图上的约束必须导致要填充的大小,然后将其解释为滚动视图的内容大小。 (这不应与用于“自动布局”的“ internalContentSize”方法混淆。)要使用“自动布局”来调整滚动视图的框架大小,必须明确规定滚动视图的宽度和高度,或者必须将滚动视图的边缘设为绑定到其子树之外的视图。请注意,可以通过在视图和滚动视图的子树外部的视图(例如,滚动)之间创建约束,使滚动视图的子视图看起来漂浮(而不滚动)在其他滚动内容上视图的超级视图。 这是两个如何配置滚动​​视图的示例,首先是混合方法,然后是纯方法。 混合方式 使用滚动视图外部的约束来确定滚动视图的位置和大小,即,translatesAutoresizingMaskIntoConstraints属性设置为NO。 为滚动视图创建一个普通的UIView内容视图,该视图将是您希望内容具有的大小。 使它成为滚动视图的子视图,但让它继续将自动调整大小蒙版转换为约束: 清单1混合方法代码清单 -(void) viewDidLoad { UIView * contentView; contentView = [[UIView alloc] initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)]; [scrollView addSubview:contentView]; //请勿更改contentView的translationsAutoresizingMaskIntoConstraints,默认情况下为YES; //设置滚动视图的内容大小以匹配内容视图的大小: [scrollView setContentSize:CGSizeMake(contentWidth,contentHeight)]; / *其余代码在这里… * / } 创建要放入内容视图中的视图并配置其约束,以便将其放置在内容视图中。 另外,您可以创建一个视图子树以进入滚动视图,设置约束,然后调用systemLayoutSizeFittingSize:方法(带有UILayoutFittingCompressedSize选项)以找到要用于内容视图的大小以及该视图的contentSize属性。滚动视图。 纯自动布局方法 要使用纯自动布局方法,请执行以下操作: 在所有涉及的视图上将translatesAutoresizingMaskIntoConstraints设置为NO。 使用滚动视图外部的约束来定位和调整滚动视图的大小。 使用约束在滚动视图中布置子视图,确保约束与滚动视图的所有四个边缘相关联,并且不依赖于滚动视图来获取其大小。 一个简单的示例是大型图像视图,该视图具有从图像大小得出的固有内容大小。 在视图控制器的viewDidLoad方法中,您将包含类似于以下清单所示代码的代码: 清单2纯自动布局方法代码清单 -(void) viewDidLoad { UIScrollView * scrollView; UIImageView * […]