Uiview ios 7上的动态扩展UITextView

Uiview ios 7上的动态扩展UITextView,uiview,uitextview,ios7,Uiview,Uitextview,Ios7,我正在使用这个代码 CGRect frame = self.mytext.frame; frame.size.height = self.mytext.contentSize.height; self.mytext.frame = frame; 但它在iOS 7中不起作用。有人知道为什么或者有同样的问题吗 编辑: 对不起。 我创建了一个UIView、一个UITextView和一个UIScrollView,以便可以在我的UITextView中加载文本 我在viewDidLoad中使用了此代码 C

我正在使用这个代码

CGRect frame = self.mytext.frame;
frame.size.height = self.mytext.contentSize.height;
self.mytext.frame = frame;
但它在iOS 7中不起作用。有人知道为什么或者有同样的问题吗

编辑:

对不起。 我创建了一个UIView、一个UITextView和一个UIScrollView,以便可以在我的UITextView中加载文本

我在viewDidLoad中使用了此代码

CGRect frame = self.moreDetailsTextView.frame;
frame.size.height = self.moreDetailsTextView.contentSize.height;
self.moreDetailsTextView.frame = frame;

CGRect moreViewFrame =  self.moreDetailsView.frame;
moreViewFrame.size.height = frame.size.height + 270;
self.moreDetailsView.frame = moreViewFrame;

int scrollViewHeight =  moreViewFrame.size.height + 235;
self.scrollView.contentSize = CGSizeMake(320, scrollViewHeight);
这在ios6中运行得很好,但是现在使用xcode5和ios7,当我在模拟器中测试应用程序时,uitextview不会扩展。

最后我完成了

如果有人遇到同样的问题,那么之前就有这个代码

    [_moreDetailsTextView sizeToFit];

在IOS7中注意到sizeToFit也不起作用-也许这个解决方案也可以帮助您

[UITEXTVIEW sizeToFit];
[UITEXTVIEW layoutIfNeeded];
使用sizeToFit调整文本视图的大小,但从底部剪切一些文本。你知道怎么解决这个问题吗

解决方案:


最后,在下面的线程中描述的方法起作用了

这两个答案对我都不起作用。我有一个可编辑的UITextView,当文本在多行中增长时,我想动态扩展它的高度

它在iOS6上运行得很好,但在iOS7上,我遇到了滚动文本视图以保持光标可见的问题

我的解决方案是在iOS7上为文本视图添加底部插图。像这样:

_textView.contentInset = SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0") ? UIEdgeInsetsMake(0, 0, DEFAULT_FONT_SIZE, 0) : UIEdgeInsetsZero;

令人满意的结果。祝你好运。

最近,我发现这个CSGrowingTextView可以在你打字时调整大小,也许它可以帮助你:

使用此方法获取文本视图的新大小

CGSize sz = [_textView.text sizeWithFont:_textView.font]
如果这对高度不起作用,请获取您刚才从preivous方法获得的宽度,并在下一种方法中使用,以获得您需要的适当高度

- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width
{
    UITextView *textView = [[UITextView alloc] init];

    [textView performSelectorOnMainThread:@selector(setAttributedText:)
                                    withObject:text
                                 waitUntilDone:YES];

    CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
    return size.height;
}
注意:如果视图中有任何动画,则在view.frame中所做的所有更改都将被放弃,因为视图将重新绘制。 因此,处理约束比处理帧本身更好,因为即使视图刷新,您在约束中所做的更改也将是永久性的

创建一个约束的IBoutlet,并像这样将其连接到类

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *your_constraint;
更改CONTAINT的值,就像更改view.frame参数那样

            _constraintHeaderTitle.constant = THE_NEW_VALUE;

为了解决这个确切的问题,我制作了一个基于自动布局的轻量级UITextView子类,它根据用户输入的大小自动增长和收缩,并且可以受最大和最小高度的约束——所有这些都不需要一行代码

主要用于Interface builder,仅适用于自动布局

是一个NSObject子类,当用户键入文本时,它会调整文本视图的大小。通过NSObject子类处理resize比子类化UITextView更有用,因为它适用于UITextView的任何子类。下面是示例用法

@interface ViewController ()<UITextViewDelegate>

 @property (weak, nonatomic) IBOutlet UITextView *textView;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;
 @property (strong, nonatomic) GrowingTextViewHandler *handler;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.handler = [[GrowingTextViewHandler alloc]initWithTextView:self.textView withHeightConstraint:self.heightConstraint];
  [self.handler updateMinimumNumberOfLines:3 andMaximumNumberOfLine:8];
 }

- (void)textViewDidChange:(UITextView *)textView {
  [self.handler resizeTextViewWithAnimation:YES];
}
@end
@界面视图控制器()
@属性(弱、非原子)IBOutlet UITextView*textView;
@属性(弱、非原子)IBNSlayoutConstraint*高度约束;
@属性(强,非原子)GrowingTextViewHandler*处理程序;
@结束
@实现视图控制器
-(无效)viewDidLoad{
[超级视图下载];
self.handler=[[GrowingTextViewHandler alloc]initWithTextView:self.textView withHeightConstraint:self.heightConstraint];
[self.handler updateMinumNumberOfLines:3和MaximumNumberOfLine:8];
}
-(无效)textViewDidChange:(UITextView*)textView{
[self.handler resizeTextViewWithAnimation:是];
}
@结束

我已经在iOS 9.3.1上开发了一个完整的解决方案来解决这个问题。找到它


完美!刚刚在
layoutSubviews
中添加了
[self.textView sizeToFit]
,一切正常。如果在获取内容大小框架高度之前运行,则测试正常。请注意,前面的三行解决方案(在问题中)仅影响高度,但这将正确“收缩包装”文本。只需将frame.width设置为创建UITextView时使用的宽度。我更喜欢这个,因为它可以让我轻松地扩展现有代码。当在iOS 7.0上禁用滚动时,文本将被切断。我已经向苹果公司提交了一个bug。老兄,你的东西上写着“版权所有”,所以这对我或任何人都没有好处。我宁愿把它归功于你,也不愿把你的作为基准。但现在我不能按原样使用该文件,因为它说保留所有权利。因此,您可能需要修复该问题。@KatedralPillon该存储库中的代码是根据MIT许可证授权的,MIT许可证是最不受限制的开源许可证之一。资料来源:它与自动布局完美配合。请参考我的答案
@interface ViewController ()<UITextViewDelegate>

 @property (weak, nonatomic) IBOutlet UITextView *textView;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;
 @property (strong, nonatomic) GrowingTextViewHandler *handler;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.handler = [[GrowingTextViewHandler alloc]initWithTextView:self.textView withHeightConstraint:self.heightConstraint];
  [self.handler updateMinimumNumberOfLines:3 andMaximumNumberOfLine:8];
 }

- (void)textViewDidChange:(UITextView *)textView {
  [self.handler resizeTextViewWithAnimation:YES];
}
@end