Как очистить содержание подпредставления перед рисованием - PullRequest
1 голос
/ 30 марта 2012

Я использую два блока, чтобы динамически нарисовать несколько кнопок в моем подпредставлении. Один рассчитывает кадры для портретного режима, а другой - для альбомного. Это работает хорошо, но когда я вращаюсь, он пишет поверх старых. Следовательно, некоторые из моих кнопок появляются дважды. Вот мой код определения ориентации:

//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 ]

5 голосов
/ 30 марта 2012

привет,.,

Попробуйте приведенный ниже код со всеми этими кнопками, которые вы выделяете на экране будет удален.

for(UIButton *view in yourview.subviews)
    {
        [view removeFromSuperview];
    }
2 голосов
/ 14 мая 2012

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

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

Если вы используете customButton, укажите ваш customButtonClassName вместо UIButton.

1 голос
/ 30 марта 2012

Не добавляйте новые кнопки вообще. Просто поменяйте старые рамки.

Если вам нужно , чтобы добавить новые кнопки. Просто удали старые! Чтобы удалить все подпредставления, вы можете использовать:

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