1

UIView を作成しました。検索バーがビューのサブビューとして追加されます。検索バーもコードで作成されます。

ビューにドロップダウンのような効果を得るために、ビューに 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;
    }

}

サブビューの追加

サブビューの追加

サブビューを削除した後

ビューを削除した後

4

1 に答える 1

1

コード内のスーパー ビューを削除していません。その高さをゼロに減らしているだけです。searchBarを と一緒にクリップしたい場合は、の clipToBounds を YESdropViewに設定します。dropViewすなわち;

dropView.clipToBounds = YES:

高さをゼロに減らす前に。

検索バーの高さもゼロに減らしていることに気付きました。しかし、UISearchBar の高さを編集することは許可されていないと思います。

于 2013-03-05T19:19:59.797 に答える