【发布时间】:2016-01-29 15:12:42
【问题描述】:
这是我的问题,我有一个滚动视图scrollExerciseIndex,我只用作滚动条,在这个滚动视图中我放置了一个 UIView indexesView,我希望它始终位于滚动视图的中心.为此,我使用布局约束:
UIView * indexesView = [[UIView alloc] initWithFrame: CGRectMake(xPosition, 0, dimension*numberIndexes, dimension)];
[self.scrollExerciseIndex addSubview:indexesView];
[self.scrollExerciseIndex setContentSize:CGSizeMake(dimension*numberIndexes, dimension)];
if (xPosition != 0) {
NSLayoutConstraint * xCenterConstraint = [NSLayoutConstraint constraintWithItem:indexesView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.scrollExerciseIndex attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];
[self.scrollExerciseIndex addConstraint:xCenterConstraint];
}
不要关注所有元素,只是屏幕底部的栏是我的问题。
我必须以编程方式创建视图,因为有时我会激活约束,有时不会,我必须动态设置视图的框架。所以现在我初始化视图indexesView,如下所示:
UIView * indexesView = [[UIView alloc] initWithFrame: CGRectMake(xPosition, 0, dimension*numberIndexes, dimension)];
(我知道,不是很原创)
我想知道是否有办法以编程方式初始化视图,但要对自动布局说它对位置没有限制,因为现在如果屏幕变为横向模式,则与滚动视图的冲突frame 发生变化,因此滚动视图的中心(我在其上设置了约束)与子视图的框架位置(xPosition)之间的距离不再相同。 如您所见,视图不再位于滚动视图的中心,并且我的一些约束被破坏了。
将尝试通过打破约束来恢复 NSLayoutConstraint:0x7bed6c50 UIView:0x7bed6ad0.centerX == UIScrollView:0x7e273200.centerX
感谢您的帮助。
【问题讨论】:
-
您遇到的具体问题是什么?
-
感谢您的快速反应,我在这里放了新的屏幕截图,因为我意识到另一个没有解释太多
-
你能添加整个代码,包括创建滚动视图的代码吗?
-
也许你也应该read this。
-
我已经添加了创建子视图和设置滚动视图内容的代码,但是滚动视图本身是在 IB 中创建的
标签: ios autolayout constraints