UIScrollviewController Не Работает Должным Образом

Я реализую простой 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 ответ

  1. У вас UIScrollViewвысота 640 и поговорим о там содержимом.

    1.myView : YPos = 20, высота = 114 i.e до 134 Y-point есть myview.

    1. nameLabel : YPos = 140, высота = 40 i.e nameLabelначинается от 140 до 180 .
    2. cityLabel : YPos = 200, высота = 40 i.e cityLabelот 200 до 240 .

    3. biography : YPos = 260, высота = 180 i.e biographyот 260 до 440 .

    4. Теперь, memberSinceLabelначиная с 600 так что нет ничего между
      От 440 до 600 .
      memberSinceLabelот 600 до 640 .

    Я обсудил пиксели каждого компонента, который находится внутри scrollView.
    По мере того как оно измерено вы точно распространяли ваши компоненты внутри scrollView.

    Но согласно документации Apple, свойство прокрутки UIScrollViewis зависит от размера содержимого, т. е. если размер содержимого scrollview больше UIscrollviewразмера, то и только тогда scrollview прокручивается в этом конкретном направлении.

    Например, UITextViewимеет свойство UIScrollViewbut if its content is greater then UItextViewsize then only you can scroll contents of В противном случае вы не можете прокрутить.

    То же самое здесь happpening с вами, ваш размер контента равен scrollViewразмеру, который означает, что вы можете видеть все содержимое без прокрутки, поэтому здесь это не прокрутка.

    И всегда помните, чтобы связать delegateи dataSourceи добавить их с вашим классом, как это @interface ProfileViewController ()<UIScrollViewDelegate>