【问题标题】:Change Size of UIView and UITextView programmatically in iOS Objective-C在 iOS Objective-C 中以编程方式更改 UIView 和 UITextView 的大小
【发布时间】:2017-06-16 15:28:00
【问题描述】:

我是iOS programming 的新手。

在我的应用程序 (ios + Objective-C + Auto resize) 中,UITextView 在 UIView 内。 UIView 的初始高度为 50,UITextView 在屏幕底部的初始高度为 30。

我想要做的是,当用户输入一些文本时,我想改变两个组件的高度,即两个组件的 y 和 height 都会改变。

我使用下面的代码,但它不能正常工作。

- (void)textViewDidChange:(UITextView *)textView
{
  CGFloat fixedWidth = textView.frame.size.width;
  CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
  CGRect newFrame = textView.frame;

  CGRect viewFrame = _viewMsg.frame;
  viewFrame.origin.y = viewFrame.origin.y - (newSize.height - 30.0);
  viewFrame.size.height = viewFrame.size.height + (newSize.height - 30.0);
  _viewMsg.frame = viewFrame;

  newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
  textView.frame = newFrame;

}

请解释一下Auto Resize 是如何动态调整大小的。

【问题讨论】:

    标签: ios objective-c dynamic autoresize


    【解决方案1】:

    您可以按照以下代码进行更改

    - (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 viewFrame = _viewMsg.frame;
        viewFrame.size.height = _viewMsg.frame.size.height;
        viewFrame.origin.y= self.view-viewFrame.size.height-30;
        _viewMsg.frame =viewFrame;
    
    }
    

    帮我增加 View 和 textView 的高度。

    【讨论】:

    • 我在 `viewFrame.origin.y= self.view-viewFrame.size.height-30; 处出现错误;`
    • 您的_viewMsg 添加在哪里?在我的情况下您需要在此处使用的视图我已将其添加到self.view。
    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多