繁体   English   中英

更改高度的UIView不起作用

[英]Changing height of UIView not working

我在scrollview中有两个UIView,其中两个视图都有子视图,其下具有自动布局关闭

- MainView
   - ScrollView 
      - UIView
         -UIButtons 
         -UIButtons
      - UIView
         - Navigation Bar
         - UIImageView 
         - UIImageView 

ScrollView下的第一个UIView具有UIButtons ,这些按钮将是动态的,具体取决于我要设置第二个视图的高度和位置。

说如果有三个按钮,则下一个UIView应该下降到第一个UIView的高度。

在尝试实现这一点时,我无法在运行时设置UIView的高度吗?

编辑:这就是我正在做的事情,我正在更改scrollview的内容大小:

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

//    CGRect frame = self.myGamesSection.frame;
//    frame.size.height = 100.0f;
//    self.myGamesSection.frame = frame;
}


-(void) viewDidAppear:(BOOL)animated {
    CGSize rSize = CGSizeMake(320.0f,1200.0f);
    self.scrollView.contentSize = rSize;     
}

-(void) viewWillAppear:(BOOL)animated {     
    CGSize rSizeMyGames = CGSizeMake(320.0f,100.0f);
    self.myGamesSection.frame = CGRectMake(0,47,320, 100);
}

UIView上添加一个UIScrollView ,然后添加您的按钮。 不要因为您的按钮大小而改变scrollViewcontentSize

上次遇到类似的问题时,当滚动视图的内容大小在运行时发生变化时,我只是切换到UITableView而不是UIScrollView,您可以始终在委托的方法heightForRowAtIndexPath中指定单元格高度,并在每次更改时将reloadData发送到tableView 。 也许这不是最好的解决方案,但它可以工作。

您可以使用这种逻辑...

     //Keep a variable which hold your yOffsetPositon and loop to add buttons. After that set the height of view.
        int yPos = 0;
        UIView *firstView = [[UIView alloc] initWithFrame:frame];
        for (int =i =0; i<10; i++){
         UIButton *b = [[UIButton alloc] initWithFrame:CGRectMake(0,yPos,30,30)];
        yPos+=30;
        //if you want spacing
        //yPos+=10;
        }
//reset height of firstView
        fistView.frame = CGRectMake(frame.origin.x,frame.origin.y,yPos,frame.size.width);
       //Set height of second view 
        UIView *secondView = [[UIView alloc] initWithFrame:CGRectMake(0,firstView.frame.size.height+10,HEIGHT,Width)];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM