我已向UIButton
添加了UILabel
和UIScrollView
。我使用自动布局为按钮添加了两个约束,而没有添加到标签。我可以在屏幕上看到标签移动,但是我没有看到按钮移动。我认为这与我添加到按钮的自动布局约束有关。我希望看到按钮滚动的方式与我在窗口/屏幕上滚动标签的方式相同。
以下是我如何设置所有内容:
_welcomeScroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
_welcomeScroller.userInteractionEnabled = YES;
_welcomeScroller.scrollEnabled = YES;
_welcomeScroller.showsHorizontalScrollIndicator = YES;
_welcomeScroller.showsVerticalScrollIndicator = YES;
#ifdef DEBUG
[_welcomeScroller setBackgroundColor:[UIColor greenColor]];
#endif
[self.view addSubview:_welcomeScroller];
CGSize welcomeScrollerSize = CGSizeMake(2000, 2000);
[_welcomeScroller setContentSize:welcomeScrollerSize];
// add test label
_test = [[UILabel alloc] initWithFrame:CGRectMake(200, 200, 200, 200)];
[_test setText:@"TEST"];
[_test setFont:[UIFont systemFontOfSize:44]];
[_test setBackgroundColor:[UIColor redColor]];
[_welcomeScroller addSubview:_test];
// add about btn to lower right
_welcomeAbout = [UIButton buttonWithType:UIButtonTypeInfoDark];
[_welcomeAbout addTarget:self action:@selector(showAboutScreen:) forControlEvents:UIControlEventTouchUpInside];
[_welcomeAbout setTranslatesAutoresizingMaskIntoConstraints:NO];
[_welcomeScroller addSubview:_welcomeAbout];
NSLayoutConstraint *pullToBottom = [NSLayoutConstraint constraintWithItem:_welcomeAbout attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:_welcomeScroller.superview attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-10.0];
NSLayoutConstraint *pullToRight = [NSLayoutConstraint constraintWithItem:_welcomeAbout attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:_welcomeScroller.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:-10];
[_welcomeScroller.superview addConstraints:@[pullToBottom, pullToRight]];
答案 0 :(得分:0)
通常,“自动布局”会考虑顶部,左侧,底部和右侧 视图的边缘是可见边缘。也就是说,如果您将视图固定到 它的超级视图的左边缘,你真的把它钉在了它上面 superview边界的最小x值。更改边界原点 超视图的位置不会改变视图的位置。
UIScrollView
类通过更改原点来滚动其内容 它的界限。要使用Auto Layout,顶部,左侧,底部, 滚动视图中的右边缘现在表示其内容的边缘 图。
按钮不滚动,因为约束是相对于滚动视图的可见左边缘设置的。
Apple的解决方案建议:
为您的滚动视图创建一个简单的
UIView
内容视图 您希望内容的大小。把它作为一个子视图 滚动视图但让它继续翻译自动调整遮罩 陷入困境。
在此内容视图中,您可以像平常一样使用约束。