1

我有屏幕底部的滚动视图。当我单击按钮时,它会加载滚动视图。但是滚动视图占据了完整的父视图。我无法控制某些 rectMake 的底部视图。如果我使用滚动视图,我将无法处理其他一些按钮操作和其他子视图的单击事件。

代码:

scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,self.view.frame.size.height)]; 

  scrollview.scrollEnabled=YES;
for (int i = 0; i<[self.array count]; i++ ) {
            NSLog(@"index %d",i);



            imgView1=[[UIButton alloc]initWithFrame:CGRectMake(20+(i*74), 500, 72, 72)];


            [imgView1 setTag:i+1];

            [imgView1 addTarget:self action:@selector(Clicked:) forControlEvents:UIControlEventTouchUpInside];

            [imgView1 setImage:((Mysof *)[self.array objectAtIndex:i]).photo forState:UIControlStateNormal];

            [scrollview addSubview:imgView1];


    }

         [scrollview setContentSize:CGSizeMake(CGRectGetMaxX(imgView1.frame),self.view.frame.size.height)];

        [self.view addSubview:scrollview];

日志:

scroll is <UIScrollView: 0x1f03d550; frame = (0 0; 320 568); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x1f037090>; layer = <CALayer: 0x1f036670>; contentOffset: {0, 0}>
4

2 回答 2

2

你这样做:

scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,self.view.frame.size.height)]; 

试试这个:

int y = self.view.frame.origin.y+ self.view.frame.size.height-200;
scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,y,320,200)];

在这里,Scrollview 将显示在视图的底部,大小为 320X200。您可以根据您的要求更改高度。当您更改高度时,也会更改 self.view.frame.origin.y+ self.view.frame.size.height-changedHeight 的值。

并像这样制作 Imageview 框架:

imgView1=[[UIButton alloc]initWithFrame:CGRectMake(20+(i*74), 0, 72, 72)];

内容大小应小于仅水平滚动的滚动视图高度。在这里,宽度应该是所有图像视图的宽度+给定空间的总和。所以我会说尝试在你的 for 循环中使用这样的 Width 变量,并将该 Width 用于内容大小,以便根据图像的总宽度进行设置。

    int Width = 0;
    for (int i = 0; i<[self.array count]; i++ ) {

      Width = Width + 20+(i*74);
    }

  [scrollview setContentSize:CGSizeMake(Width,imgView1.frame.size.height+20)];

希望能帮助到你!!

于 2013-08-12T11:19:23.057 回答
0

将scrollView的高度设置为底部按钮的原点,

scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,400)];

在这里,我假设您的按钮/底部视图的 y 位置为 400。相反,您可以根据需要进行更改

于 2013-08-12T11:17:27.163 回答