繁体   English   中英

如何使用自动布局基于Ios中的内容大小滚动内容视图

[英]How to scroll the content view based on content size in Ios using autolayouts

布局,在我的项目中,我已经使用自动布局在视图控制器上添加了scrollview,并且在此scrollview上添加了一个内容视图

所以对于一切都还可以,但是我想根据内容大小滚动内容视图,为此我进行了很多搜索,但是我没有得到结果,请帮助我

根据我的代码屏幕显示如下,我剩余的数据没有滚动我在这里做错了什么(这里的滚动必须在所有i-phone和i-pad英寸上都匹配)

我的代码:

#import "ViewController3.h"

@interface ViewController3 ()
{
    UIScrollView * scrollView;
    UIView * containerView;
    UITextView * TextView;
}

@end

@implementation ViewController3


- (void)viewDidLoad {
    [super viewDidLoad];

    scrollView = [[UIScrollView alloc] init];
    scrollView.backgroundColor = [UIColor lightGrayColor];
    scrollView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:scrollView];

    containerView = [[UIView alloc] init];
    containerView.backgroundColor = [UIColor redColor];
    containerView.translatesAutoresizingMaskIntoConstraints = NO;
    [scrollView addSubview:containerView];

    //Applying autolayouts for scrollview
    NSLayoutConstraint * constraint1 = [NSLayoutConstraint constraintWithItem:scrollView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem: self.view attribute:NSLayoutAttributeTop multiplier:1.0f constant:0.0f];
    [self.view addConstraint:constraint1];

    constraint1 = [NSLayoutConstraint constraintWithItem:scrollView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f];
    [self.view addConstraint:constraint1];

    constraint1 = [NSLayoutConstraint constraintWithItem:scrollView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:0.0f];
    [self.view addConstraint:constraint1];

    constraint1 = [NSLayoutConstraint constraintWithItem:scrollView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f];
    [self.view addConstraint:constraint1];

    TextView = [UITextView new];
    TextView.translatesAutoresizingMaskIntoConstraints = NO;
    TextView.text = @"In December 2012, Tendulkar announced his retirement from ODIs.[23] He retired from Twenty20 cricket in October 2013[24] and subsequently announced his retirement from all forms of cricket,[25][26] retiring on 16 November 2013 after playing his 200th and final Test match, against the West Indies in Mumbai's Wankhede Stadium.[27] Tendulkar played 664 international cricket matches in total, scoring 34,357 runs.[8]In December 2012, Tendulkar announced his retirement from ODIs.[23] He retired from Twenty20 cricket in October 2013[24] and subsequently announced his retirement from all forms of cricket,[25][26] retiring on 16 November 2013 after playing his 200th and final Test match, against the West Indies in Mumbai's Wankhede Stadium.[27] Tendulkar played 664 international cricket matches in total, scoring 34,357 runs.[8]In December 2012, Tendulkar announced his retirement from ODIs.[23] He retired from Twenty20 cricket in October 2013[24] and subsequently announced his retirement from all forms of cricket,[25][26] retiring on 16 November 2013 after playing his 200th and final Test match, against the West Indies in Mumbai's Wankhede Stadium.[27] Tendulkar played 664 international cricket matches in total, scoring 34,357 runs.[8]In December 2012, Tendulkar announced his retirement from ODIs.[23] He retired from Twenty20 cricket in October 2013[24] and subsequently announced his retirement from all forms of cricket,[25][26] retiring on 16 November 2013 after playing his 200th and final Test match, against the West Indies in Mumbai's Wankhede Stadium.[27] Tendulkar played 664 international cricket matches in total, scoring 34,357 runs.[8]In December 2012, Tendulkar announced his retirement from ODIs.[23] He retired from Twenty20 cricket in October 2013[24] and subsequently announced his retirement from all forms of cricket,[25][26] retiring on 16 November 2013 after playing his 200th and final Test match, against the West Indies in Mumbai's Wankhede Stadium.[27] Tendulkar played 664 international cricket matches in total, scoring 34,357 runs.[8]In December 2012, Tendulkar announced his retirement from ODIs.[23] He retired from Twenty20 cricket in October 2013[24] and subsequently announced his retirement from all forms of cricket,[25][26] retiring on 16 November 2013 after playing his 200th and final Test match, against the West Indies in Mumbai's Wankhede Stadium.[27] Tendulkar played 664 international cricket matches in total, scoring 34,357 runs.[8]In December 2012, Tendulkar announced his retirement from ODIs.[23] He retired from Twenty20 cricket in October 2013[24] and subsequently announced his retirement from all forms of cricket,[25][26] retiring on 16 November 2013 after playing his 200th and final Test match, against the West Indies in Mumbai's Wankhede Stadium.[27] Tendulkar played 664 international cricket matches in total, scoring 34,357 runs.[8]";
    TextView.backgroundColor = [UIColor lightGrayColor];
    [containerView addSubview:TextView];

    //Applying autolayouts for textview1
    NSLayoutConstraint * constraint = [NSLayoutConstraint constraintWithItem:TextView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem: containerView attribute:NSLayoutAttributeTop multiplier:1.0f constant:20.0f];
    [containerView addConstraint:constraint];

    constraint = [NSLayoutConstraint constraintWithItem:TextView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeLeading multiplier:1.0f constant:5.0f];
    [containerView addConstraint:constraint];

    constraint = [NSLayoutConstraint constraintWithItem:TextView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:-5.0f];
    [containerView addConstraint:constraint];

    constraint = [NSLayoutConstraint constraintWithItem:TextView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeHeight multiplier:1 constant:600];
    [containerView addConstraint:constraint];

    //Applying autolayouts for containerview
    NSLayoutConstraint * constraint2 = [NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem: scrollView attribute:NSLayoutAttributeTop multiplier:1.0f constant:0.0f];
    [scrollView addConstraint:constraint2];

    constraint2 = [NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f];
    [scrollView addConstraint:constraint2];

    constraint2 = [NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:0.0f];
    [scrollView addConstraint:constraint2];

    constraint2 = [NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeBottom multiplier:1.0f constant:-10.0f];
    [scrollView addConstraint:constraint2];

    constraint2 = [NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeWidth multiplier:1 constant:0];
    [scrollView addConstraint:constraint2];

    constraint2 = [NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeHeight multiplier:1 constant:0];
    [scrollView addConstraint:constraint2];
}

在此处输入图片说明

看一下这个:

UIScrollView * scroll = ...
[self.view addSubview: scroll];

UIView * scrollWrapper = ... 
[scroll addSubview: scrollWrapper];

// each new view will be added as a subview of "scrollWrapper"

UIView *mainView = self.view;

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(scroll, scrollWrapper, mainView);

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scroll]|" options:0 metrics:nil views:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scroll]|" options:0 metrics:nil views:viewsDictionary]];

[scroll addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollWrapper]|" options:0 metrics:nil views:viewsDictionary]];
[scroll addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollWrapper]|" options:0 metrics:nil views:viewsDictionary]];

/* add constraints for subviews */
[scrollWrapper addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"<VFL Constraint>" options:0 metrics:nil views:viewsDictionary]];


/* this is the key to make the content scrollable */
[mainView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[scrollWrapper(==mainView)]" options:0 metrics:0 views:viewsDictionary]];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM