在iPad中删除超级视图时,不会删除子视图

时间:2013-03-05 18:39:02

标签: iphone objective-c addsubview

我创建了一个UIView.A搜索栏作为子视图添加到视图中。搜索栏也是通过代码创建的。

我已经给视图一个UIAnimation,以获得对视图的下拉效果。

到目前为止它工作正常。

问题是当我删除超级视图时视图已经开始但搜索栏仍在那里。

以下是一些代码:

@interface ATViewController : UIViewController<UISearchBarDelegate>
{
    UIView *dropView;

    UISearchBar *searchBar;
}

- (void)viewDidLoad
{
    dropView = [[UIView alloc]initWithFrame:CGRectMake(70, 70, 150, 100)];
    searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,0,150,0)];
        [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(IBAction)buttonClicked:(id)sender{
   // self.searchBar.delegate = self;
    [dropView addSubview:searchBar];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.9];

    dropView.backgroundColor = [UIColor blueColor];
    dropView.frame = CGRectMake(70, 70, 150, 550);
    self.searchBar.frame=CGRectMake(0,0, 150, 40);

    [UIView commitAnimations];
    [self.view addSubview:dropView];
}
-(void)doSingleTap:(UITapGestureRecognizer *)sender
{
    switch (sender.numberOfTapsRequired) {
        case 1:
            [UIView beginAnimations:nil context:nil];
            [UIView setAnimationDuration:0.5];

            dropView.frame = CGRectMake(70, 70, 150, 0);
            self.searchBar.frame=CGRectMake(0, 0, 150, 0);
            [UIView commitAnimations];
            break;

        default:
            break;
    }

}

添加子视图

Adding the Subview

删除子视图后

After removing the view

1 个答案:

答案 0 :(得分:1)

您没有删除代码中的超级视图。你只是将它的高度降低到零。如果您希望searchBardropView一起剪裁,则将dropView的clipToBounds设置为YES。 即;

dropView.clipToBounds = YES:
在将高度降低到零之前

注意到您也将搜索栏高度降低到零。但我认为你不能编辑UISearchBar的高度。