如何使用ios中的自动布局更改scrollView内容大小

时间:2015-10-20 06:28:57

标签: ios objective-c uiscrollview

我在滚动视图中添加了3个UITextfields和1个UIButton。

我的主要要求是当我点击UITextfield时,滚动必须向上滚动到键盘上方用户可见的所有字段。

当我单击键盘上的返回按钮时,滚动默认情况下必须滚动使用自动布局设置的scrollview contentSize。

我的代码:

ProcessBuffer

3 个答案:

答案 0 :(得分:0)

请查看这个非常棒的教程,它对您有用。

**

  

Using UIScrollView with Auto Layout in iOS

**

正如在博客中所说,当你使用autolayout时,你需要以这种方式设置约束。

NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.contentView
                                                                  attribute:NSLayoutAttributeLeading
                                                                  relatedBy:0
                                                                     toItem:self.view
                                                                  attribute:NSLayoutAttributeLeft
                                                                 multiplier:1.0
                                                                   constant:0];
[self.view addConstraint:leftConstraint];

NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:self.contentView
                                                                   attribute:NSLayoutAttributeTrailing
                                                                   relatedBy:0
                                                                      toItem:self.view
                                                                   attribute:NSLayoutAttributeRight
                                                                  multiplier:1.0
                                                                    constant:0];
[self.view addConstraint:rightConstraint];

根据您的要求更改价值和名称。

答案 1 :(得分:0)

出现keyBoards时。

   CGRect frame = currentActiveView.frame; // your scrollview frame 
frame.size.height = SCREEN_HEIGHT - 216 - keyboardAccesssory.frame.size.height;
currentActiveView.frame = frame;

[yourScrollView setContentSize:CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT)];

当键盘辞职时..

CGRect frame = currentActiveView.frame; // your scrollview frame 
frame.size.height = SCREEN_HEIGHT;

currentActiveView.frame = frame;

[yourScrollView setContentSize:CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT)];

答案 2 :(得分:0)

您需要使用视图的框架。 在显示键盘时将框架移动到键盘上方,而在隐藏键盘时重置其位置。 您需要以编程方式执行此操作。 您也可以浏览Apple的编程指南。 https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW3