我正在尝试使用苹果开发链接上提到的“混合方法”的示例代码:
我试图在 UIScrollView 中垂直堆叠 3 个视图。在下面的示例中,UIScrollView 在加载时显示红色视图,但未按预期滚动。我可以滚动一点以查看红色视图下方的绿色视图 - 但滚动视图会弹回并且不会滚动到绿色视图或它下方的视图(蓝色视图)。我知道我需要一个约束,我试图在视图 1 和 2 之间添加一个约束,以便 view2.top = view1.bottom ,但似乎我遗漏了一些东西。
我还注意到滚动视图的内容大小为零(在 viewDidAppear 方法中)。
关于我所缺少的任何提示或有关如何使这种混合方法发挥作用的帮助都会很棒!
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIScrollView* scrollView = ((UIScrollView*)self.view);
scrollView.translatesAutoresizingMaskIntoConstraints = NO;
CGFloat w = self.view.frame.size.width;
CGFloat h = self.view.frame.size.height;
contentView = [[UIView alloc] initWithFrame:CGRectMake(0,0, w, h*3)];
[scrollView addSubview:contentView];
v1 =[[UIView alloc] initWithFrame:CGRectMake(0,0, w, h)];
v2 =[[UIView alloc] initWithFrame:CGRectMake(0,h, w, h)];
v3 =[[UIView alloc] initWithFrame:CGRectMake(0,h*2, w, h)];
v1.backgroundColor = [UIColor redColor];
v2.backgroundColor = [UIColor greenColor];
v3.backgroundColor = [UIColor blueColor];
[contentView addSubview:v1];
[contentView addSubview:v2];
[contentView addSubview:v3];
NSLayoutConstraint *myConstraint =[NSLayoutConstraint
constraintWithItem:v1
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:v2
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0];
[contentView addConstraint:myConstraint];
scrollView.contentSize = contentView.bounds.size;
}