UIScrollView на пользовательском представлении xib не прокручивается при вызове через addSubView - PullRequest
0 голосов
/ 08 октября 2018

У меня есть пользовательское представление с высотой 800 в XIB, как показано на рисунке:

enter image description here

это иерархия:

enter image description here

этот код на моем customView.m:

- (id)initWithFrame:(CGRect)frame
{
NSLog(@"initWithFrame");
self = [super initWithFrame:frame];
if (self) {
    [self setup];
}
return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder {
NSLog(@"initWithCoder");
self = [super initWithCoder:aDecoder];
if(self) {
    [self setup];
}
return self;
}

- (void)setup {

[[NSBundle mainBundle] loadNibNamed:@"customView" owner:self options:nil];
[self addSubview:self.view];
self.view.frame = CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, CGRectGetHeight(self.view.frame));
//[self.myscrollview setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width, 2000)];
NSLog(@"contentSize Height :%f", self.myscrollview.contentSize.height);
NSLog(@"contentView Height :%f", self.contentView.frame.size.height);
}

и addSubview customView на моем представлении viewController:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

customView *myView = [[customView alloc] init];

[self.view addSubview:myView];

}

загружен, но scrollView не прокручивается.Затем я проверяю высоту customView и contentView, она возвращает 800, но высота scrollView contentSize возвращает 0. Поэтому я попытался установить для contentSize значение 2000, но он все еще не прокручивается.меня смутило то, что после того, как я установил конечный scrollView, ведущий, нижний и верхний 0 на superView, он не следует высоте contentView, вместо этого возвращает 0. Как я должен установить contentSize тогда?

примечание: contentView имеет высоту и ширину, равные superView, и приоритет установлен на 250

github: пример проекта

1 Ответ

0 голосов
/ 08 октября 2018

Это потому, что вы не установили рамку для myView.Замените ваш метод viewDidLoad на приведенный ниже код, и он будет работать как положено

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
     customView *customV = [[customView alloc] initWithFrame:self.wantToShowHereView.bounds];
    [self.wantToShowHereView addSubview:customV];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...