【问题标题】:Adjust height of View调整视图高度
【发布时间】:2015-10-06 10:39:32
【问题描述】:

我有一张桌子,在这张桌子下面是 bottomView 。我的目标是在键盘向上时向上移动底部视图。但是当我们调整键盘时,这种方法会向上调用我的底部视图。我被卡住了

- (void)keyboardWasShown:(NSNotification*)aNotification
{    
        NSDictionary* info = [aNotification userInfo];
        CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    keyBoadSize =kbSize.height;

        [UIView animateWithDuration:0.2f animations:^{
        CGRect frame=bottomView.frame;
        keyBoardHeight = keyBoadSize;


        frame.origin.y -=keyBoadSize;
          bottomView.frame=frame;
        frame = tableViews.frame;
        frame.size.height -= keyBoardHeight;
        tableViews.frame = frame;



}

我也在用

- (void)textViewDidChange:(UITextView *)textView
{
    CGFloat fixedWidth = textView.frame.size.width;
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
    CGRect newFrame = textView.frame;
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
    textView.frame = newFrame;
    CGRect frame1 = [UIScreen mainScreen].bounds;
    bottomView.frame=CGRectMake(0, frame1.size.height-keyBoardHeight-20-newSize.height, self.view.frame.size.width, newSize.height+50);



}

【问题讨论】:

  • @ElCaptain 我没有使用约束
  • 你需要正确设置你的tableview的contentInset。将其高度组件设置为键盘的高度。
  • @Abhinav 请帮忙

标签: objective-c iphone ios8


【解决方案1】:

您需要先在表格视图中添加空间以允许滚动:

[self.tableView setContentInset:UIEdgeInsetsMake(0.0, 0.0, keyBoardheight, 0.0)];

然后为自定义底部视图的 Y 位置设置动画。

附带说明,在您的示例代码中 keyBoadSize 具有误导性。应该是keyBoardheight

PS:当键盘像这样关闭时,不要忘记重置滚动空间:[self.tableView setContentInset:UIEdgeInsetsZero];

【讨论】:

  • 它适用于表视图,但不适用于底视图
  • 自定义视图是您的表格视图的一部分。除非您不会在可滚动内容中添加空间,否则视图将无法正确滚动。如果您阅读了我的回复,我仍然要求您为自定义底部视图的 Y 位置设置动画。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 2011-04-13
  • 1970-01-01
相关资源
最近更新 更多