【发布时间】:2015-10-25 15:42:22
【问题描述】:
我在 iPad 应用中有一个视图,它在全屏模式下会展开以填满整个屏幕,并且可以纵向和横向使用。
这个视图还包含许多子视图(如矩形卡片)和一个滚动视图。
[我以编程方式将这些添加到内容视图中,该内容视图以编程方式(在滚动视图中)计算卡片的帧大小]
contentView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 640, 2000)];
[contentView addSubview:firstCard];
self.formScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
self.formScrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.formScrollView.scrollEnabled=true;
self.scrollView addSubview:contentView];
self.scrollView.contentSize=contentView.frame.size;
我的要求是,尽管有方向,但所有卡片都将一个接一个地对齐,左右边缘的间距相等。
不同高度的卡片宽度都相等。
到目前为止,这就是我尝试将它们设置为水平居中的方法。我在 viewDidLayoutSubviews 中添加了这段代码 sn-p
[contentView addConstraint:[NSLayoutConstraint constraintWithItem:firstCard
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:contentView
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0.0]];
其中contentView指的是全屏视图控制器中的contentView,第一张卡片是第一个子视图卡片
我也设置了属性
firstCard.translatesAutoresizingMaskIntoConstraints = NO;
在模拟器中运行时,我得到了灾难性的结果。视野奇怪地偏移了,其他卡片都散落在其他地方。
当我不设置约束时,不会发生这种情况。它们看起来很丑,但它们仍然按照应有的方式垂直对齐。
我对自动布局和 iOS 开发还很陌生。
我想知道这些问题是否与我的 contentView 是固定框架这一事实有关?
我将 contentView 与这样一个固定的框架牢记在心,非全屏模式。
我哪里错了?我非常感谢任何帮助和建议。
谢谢。
编辑:-
我还尝试对齐我的内容视图,使其保持在滚动视图的中心。这是代码......
(那也是一场灾难,内容视图甚至没有出现在屏幕上)
[self.formScrollView addConstraint:[NSLayoutConstraint constraintWithItem:contentView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.formScrollView
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0.0]];
}
[formScrollView 是滚动视图]
【问题讨论】:
标签: ios objective-c ipad uiview autolayout