0

ビューの下部に非表示にしたいタブバーがあります。Saurabh から提供されたコードを使用して非表示にしています

コードはうまく機能しますが、テキスト ビューの場所を変更する行を追加しました。しかし、テキスト ビューのサイズが変更されます。コードは次のとおりです。

- (void) hideTabBar:(UITabBarController *) tabbarcontroller {


    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    for(UIView *view in tabbarcontroller.view.subviews)
    {
        if([view isKindOfClass:[UITabBar class]])
        {
            [view setFrame:CGRectMake(view.frame.origin.x, 480.0f, view.frame.size.width, view.frame.size.height)];
        } 
        else 
        {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480.0f)];
        }

    }
    [buttonView setFrame:CGRectMake(0.0, 154.0, 320.0, 306.0)];
    [screenImageView setFrame:CGRectMake(0.0, 16.0, 320.0, 139.0 )];
    [inputView setFrame:CGRectMake(20.0f, 105.0f, 280.0f, 50.0f)];

    [UIView commitAnimations];

}

- (void) showTabBar:(UITabBarController *) tabbarcontroller {

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    for(UIView *view in tabbarcontroller.view.subviews)
    {        
        if([view isKindOfClass:[UITabBar class]])
        {
            [view setFrame:CGRectMake(view.frame.origin.x, 431.0f, view.frame.size.width, view.frame.size.height)];

        } 
        else 
        {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431.0f)];
        }


    }
    [buttonView setFrame:CGRectMake(0.0, 105.0, 320.0, 306.0)];
    [screenImageView setFrame:CGRectMake(0.0, 16.0, 320.0, 90.0 )];
    [inputView setFrame:CGRectMake(20.0f, 56.0f, 280.0f, 50.0f)];

    [UIView commitAnimations]; 

}

inputView(UITextview)のサイズが変更されることを除いて、すべてがうまく機能します。タブバーを非表示にするとテキストビュー(inputView)の高さが58になり、再度タブバーを表示するとテキストビューの高さが43になります。

必要に応じて、いつでも 7 または 8 を足したり引いたりすることができました。しかし、何が原因なのかを知ることは良いことだと思いました。

ありがとう!

4

2 に答える 2

1

ほとんどの場合、 のautoresizingMaskプロパティがUITextView柔軟な高さを許可するように設定されているためです。以下のコードのようなものが役立ちます。

inputView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin; // Pins inputView to the top
于 2012-05-29T20:28:00.793 に答える
0

autoResizingMaskのプロパティをinputViewto に設定してみてくださいUIViewAutoresizingNone。テキスト フィールドのスーパービューのフレームをリセットすると、入力ビューでサイズ変更イベントがトリガーされる可能性があります。

于 2012-05-29T20:27:59.123 に答える