добавить UIButton в UIScrollView, а затем UIScrollView в UIView - PullRequest
1 голос
/ 19 января 2012

Мне нужно создать UIButton программно, затем положить его на созданный UIScrollView, а затем положить UIScrollView на UIView.Если добавить эти элементы в self.view, они отображаются, но когда я хочу вложить, они не отображаются.Вот что у меня пока так:

viewWithPictures=[[UIScrollView alloc] initWithFrame:self.bottomView.frame];
viewWithPictures.contentSize=CGSizeMake(160*[smallImagesFromGallery count], self.bottomView.frame.size.height);

viewWithPictures.backgroundColor=[UIColor greenColor];
NSLog(@"Number of small images: %i",[smallImagesFromGallery count]); 

for(int i=0; i<[smallImagesFromGallery count]; i++)
{
    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

    btn.frame=CGRectMake(self.bottomView.frame.origin.x+i*160, self.bottomView.frame.origin.y, 150, 100);

    [btn setBackgroundImage:[smallImagesFromGallery objectAtIndex:i] forState:UIControlStateNormal];
    if (btn==nil) {
        NSLog(@"Button is nil");
    }
    btn.tag=i;
    [btn addTarget:self action:@selector(viewLargeVersion:) forControlEvents:UIControlEventTouchUpInside];
    [viewWithPictures addSubview:btn];



}
[bottomView addSubview:viewWithPictures];

Ответы [ 3 ]

1 голос
/ 19 января 2012
viewWithPictures=[[UIScrollView alloc] initWithFrame:self.bottomView.frame];

до

viewWithPictures=[[UIScrollView alloc] initWithFrame:CGRectMake(0,0,self.bottomView.frame.size.width,self.bottomView.frame.size.height)];

и это

btn.frame=CGRectMake(self.bottomView.frame.origin.x+i*160, self.bottomView.frame.origin.y, 150, 100);

до

btn.frame=CGRectMake(i*160, self.bottomView.frame.origin.y, 150, 100);

Это всего лишь предложение.

1 голос
/ 19 января 2012

Когда вы устанавливаете фрейм вида, который станет подпредставлением, вам нужно ссылаться на границы вида, к которому он будет добавлен.Поэтому я думаю, что вам нужно изменить пару строк:

viewWithPictures=[[UIScrollView alloc] initWithFrame:self.bottomView.frame];

должно быть:

viewWithPictures=[[UIScrollView alloc] initWithFrame:self.bottomView.bounds];

и

btn.frame=CGRectMake(self.bottomView.frame.origin.x+i*160, self.bottomView.frame.origin.y, 150, 100);

должно быть:

btn.frame=CGRectMake(i*160, 0, 150, 100);
0 голосов
/ 19 января 2012

Трудно сказать без остальной части кода, но может ли быть так, что вы не добавляете свое представление контейнера (bottomView) в свое представление?Что вы можете сделать, добавив это в конце: [self.view addSubview: bottomView]

...