如何在绘图前清除子视图的内容

时间:2012-03-30 13:26:59

标签: ios ipad uiview uibutton

我使用两个块动态地在子视图上绘制一些按钮。一个计算纵向模式的帧,另一个计算横向。它工作得很好但是当我旋转时,它会写入旧的。因此,我的一些按钮来了两次。这是我检测oriantation的代码:

//i have defined blocks in viewDidLoad: and everything is ok till here
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        {
            dispatch_async(dispatch_get_main_queue(), PortraitBlock);        
        }       
        else 
        { 
            dispatch_async(dispatch_get_main_queue(), LandscapeBlock);
               }
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || 
                interfaceOrientation == UIInterfaceOrientationPortrait || 
                interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
                interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
    }

现在,我如何清理视图,我添加按钮?

注意:我在UIView对象上添加按钮,该对象也在UIScrollView对象上

3 个答案:

答案 0 :(得分:5)

  

嗨,。,

     

使用您在视图上分配的所有按钮尝试以下代码   将被删除。

for(UIButton *view in yourview.subviews)
    {
        [view removeFromSuperview];
    }

答案 1 :(得分:2)

在从视图中删除视图之前,请先检查课程,然后将其删除。之后,您可以根据方向在屏幕上添加按钮。

for(UIView *view in [View to add buttons].subviews)
{
   if ([view isKindOfClass:[UIButton class]]) [view removeFromSuperview];
}

如果您使用任何customButton,请提及customButtonClassName代替UIButton

答案 2 :(得分:1)

根本不添加新按钮。只需更改旧框架。

如果需要添加新按钮。只需删除旧的!?要删除所有子视图,您可以使用:

for(UIView* view in self.view.subviews)
{
    [view removeFromSuperview];
}