UIScrollviewController无法按预期工作

时间:2016-12-30 03:50:18

标签: ios objective-c uiscrollview

我正在我的应用中实现一个简单的scrollview。但是,视图根本不会滚动。只有"传记"子视图在其自己的视图中滚动,而不是相对于父视图。下面是父视图的实现文件。

#import "ProfileViewController.h"

@interface ProfileViewController ()

@end

@implementation ProfileViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"Profile";
    self.tabBarItem.image = [UIImage imageNamed:@"tabbarviewimage"];
    self.view.backgroundColor = [UIColor whiteColor];

    self.scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    self.scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    self.scrollView.contentSize = CGSizeMake(320, 640);

    UIImageView *myView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tabbarviewimage"]];
    [myView setContentMode:UIViewContentModeScaleAspectFit];
    myView.frame = CGRectMake(20, 20, 100, 114);

    UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 140, 280, 40)];
    nameLabel.text = @"Name: Jon Doe";

    UILabel *cityLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 200, 280, 40)];
    cityLabel.text = @"From: Los Angeles";

    UITextView *biography = [[UITextView alloc] initWithFrame:CGRectMake(12, 260, 300, 180)];
    biography.font = [UIFont fontWithName:@"Helvetica" size:15];
    biography.editable = NO;
    biography.text = @"sample bio";

    UILabel *memberSinceLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 600, 280, 40)];
    memberSinceLabel.text = @" 2016";

    [self.scrollView addSubview:myView];
    [self.scrollView addSubview:nameLabel];
    [self.scrollView addSubview:cityLabel];
    [self.scrollView addSubview:biography];
    [self.scrollView addSubview:memberSinceLabel];

    [self.view addSubview:self.scrollView ];

}

@end

1 个答案:

答案 0 :(得分:0)

你有UIScrollView身高640并谈论那里的内容。

1。myView : YPos = 20,高度 = 114,即高达134 Y点有myview。

  1. nameLabel : YPos = 140,高度 = 40即nameLabel 140 开始到 180 即可。
  2. cityLabel : YPos = 200,高度 = 40即cityLabel 200 到<强> 240

  3. biography : YPos = 260,高度 = 180,即biography 260 到<强> 440

  4. 现在,memberSinceLabel 600 开始,所以之间没有任何内容 440 600 memberSinceLabel 600 640

  5. 我已经讨论了scrollView中每个组件的像素。 通过测量,您可以在scrollView内精细地展开您的组件。

    但是根据 Apple文档UIScrollView的滚动属性取决于内容大小,即如果scrollview的内容大小大于UIscrollview大小那么只有这样scrollview在那个特定的方向滚动。

    例如,UITextView具有UIScrollView的属性,但如果其内容大于UItextView大小,那么只有您可以滚动内容,否则您无法滚动。

    同样在这里开心,您的内容大小等于scrollView大小,这意味着您可以看到所有内容而无需滚动,这就是为什么这里不滚动。

    始终记住绑定delegatedataSource并将其添加到您的课程中@interface ProfileViewController ()<UIScrollViewDelegate>