UITableView看起来比设置大

时间:2014-08-10 15:33:24

标签: ios objective-c iphone uitableview uiview

我在故事板中构建了一个简单的UIViewController,顶部有一个导航栏,底部是UITableView和UITextView。

当我启动应用程序时,会触发一个动画,并且TableView的高度将减少大约相同的值,就像底部的TextView的高度会增加一样。当我观察显示变化的NSLog时,这非常有效。但是,如果我在GUI上同时查看TextView会增加但TableView不会以任何方式改变。此外,如果我想向下滚动以查看我的所有TableViewCells,我可以注意到,由于我释放手指后TableView向后滚动,因此没有任何变化。

这是我的代码: (“frame”是TextView“_tLive”的框架)

- (void)MySetTextViewWithFrame: (CGRect)frame
{
    if ([self.view.subviews containsObject: _tLive])
    {
        [UIView animateWithDuration:0.4 animations:^
        {
            _tLive.frame = frame;
        }];
    }
    else
    {
        _tLive = [[UITextView alloc] initWithFrame: frame];
        _tLive.backgroundColor = [UIColor blackColor];
        _tLive.textColor = [UIColor greenColor];
        _tLive.delegate = (id)self;
        _tLive.autocorrectionType = UITextAutocorrectionTypeNo;
        _tLive.autocapitalizationType = UITextAutocapitalizationTypeNone;
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(MyStartLiveChat)];
        [_tLive addGestureRecognizer: tap];
        [self.view addSubview: _tLive];
    }

    [UIView animateWithDuration:0.4 animations:^
    {
        CGRect newTableViewFrame = CGRectMake(_tvCommands.frame.origin.x, _tvCommands.frame.origin.y, _tvCommands.frame.size.width, frame.origin.y - _tvCommands.frame.origin.y);

        NSLog(@"View Frame: x:%0.0f, y:%0.0f, width:%0.0f, height:%0.0f", frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);
        NSLog(@"End of TableView: %0.0f", newTableViewFrame.size.height + newTableViewFrame.origin.y);
        NSLog(@"Beginning of _tLive: %0.0f", frame.origin.y);
        _tvCommands.frame = newTableViewFrame;

        NSLog(@"Final TableView Frame: x:%0.0f, y:%0.0f, width:%0.0f, height:%0.0f", _tvCommands.frame.origin.x, _tvCommands.frame.origin.y, _tvCommands.frame.size.width, _tvCommands.frame.size.height);
    }];
}

以下是我的日志:

2014-08-10 17:20:31.922 App [542:60b] View Frame: x:0, y:533, width:320, height:35 
2014-08-10 17:20:31.923 App [542:60b] End of TableView: 533 
2014-08-10 17:20:31.925 App [542:60b] Beginning of _tLive: 533 
2014-08-10 17:20:31.928 App [542:60b] Final TableView Frame: x:0, y:68, width:320, height:465

...

2014-08-10 17:21:02.490 App [550:60b] View Frame: x:0, y:344, width:320, height:224
2014-08-10 17:21:02.491 App [550:60b] End of TableView: 344
2014-08-10 17:21:02.492 App [550:60b] Beginning of _tLive: 344
2014-08-10 17:21:02.493 App [550:60b] Final TableView Frame: x:0, y:68, width:320, height:276

我也试过设置TableView的contentSize但没有成功。

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您在故事板中使用了autolayout,则上述代码无法正常工作。尝试在故事板中禁用自动布局。