UITextview框架调整为不正确的高度

时间:2012-05-29 20:16:38

标签: ios uitabbarcontroller uitextview autoresizingmask

我的视图底部有一个标签栏,我想隐藏它。我使用Saurabh here提供的代码隐藏它。

代码效果很好,但是我添加了一行来更改文本视图的位置。但文本视图调整大小!这是代码:

- (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)调整大小外,每件事都很有效。如果隐藏了标签栏,则textview(inputView)的高度变为58,当我再次显示标签栏时,textview的高度变为43。

我总是可以根据需要添加或减去7或8。但我认为知道造成这种情况的原因可能会很好。

谢谢!

2 个答案:

答案 0 :(得分:1)

很可能是因为autoresizingMask的{​​{1}}属性设置为允许灵活的高度。类似下面的代码应该有所帮助:

UITextView

答案 1 :(得分:0)

尝试将autoResizingMask的{​​{1}}属性设置为inputView。重置文本字段的超级视图的帧可能会在输入视图上触发调整大小事件。