滚动到 UITextView 文本的末尾
Scrolling to the end of UITextView's text
我在视图中有一些内容(例如图像、标签),最后一项是描述 (UITextView
)。现在我正在尝试根据 UITextView
文本动态滚动内容。这是我的代码:
- (void)viewDidAppear:(BOOL)animated {
_descriptions.scrollEnabled = NO;
[_descriptions sizeToFit];
_infoScrollView.contentSize = CGSizeMake(_contentsOnInfoView.frame.size.width,
_contentsOnInfoView.frame.size.height + _descriptions.frame.size.height);
}
结果如下:
如您所见,有很多空 space。我需要滚动到文本末尾。
我建议你试试这个。
[myTextView scrollRangeToVisible:NSMakeRange([myTextView.text length], 0)]
//may be it will work for you
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
//set the line break mode
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attrDict = [NSDictionary dictionaryWithObjectsAndKeys: description.font,
NSFontAttributeName,
paragraphStyle,
NSParagraphStyleAttributeName,
nil];
CGRect rect = [description.text boundingRectWithSize:CGSizeMake(description.size.width, FLT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attrDict
context:nil];
CGSize size = rect.size;
_infoScrollView.contentSize = CGSizeMake(_contentsOnInfoView.frame.size.width,description.frame.origin.y + size.height + 20)
你应该在
中编写你的代码
-(void) viewDidLayoutSubviews {}
在这种方法中,所有组件都有根据 运行 设备尺寸的框架。并在出现视图之前执行。
我刚找到答案,在 UI 中有一行将描述与一些信息分开!我只是计算该行的 y
并总结描述 height
:
_descriptions.scrollEnabled = NO;
[_descriptions sizeToFit];
_infoScrollView.contentSize = CGSizeMake(_infoView.frame.size.width, _line.frame.origin.y + _descriptions.bounds.size.height);
现在可以正常使用了!
我在视图中有一些内容(例如图像、标签),最后一项是描述 (UITextView
)。现在我正在尝试根据 UITextView
文本动态滚动内容。这是我的代码:
- (void)viewDidAppear:(BOOL)animated {
_descriptions.scrollEnabled = NO;
[_descriptions sizeToFit];
_infoScrollView.contentSize = CGSizeMake(_contentsOnInfoView.frame.size.width,
_contentsOnInfoView.frame.size.height + _descriptions.frame.size.height);
}
结果如下:
如您所见,有很多空 space。我需要滚动到文本末尾。
我建议你试试这个。
[myTextView scrollRangeToVisible:NSMakeRange([myTextView.text length], 0)]
//may be it will work for you
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
//set the line break mode
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attrDict = [NSDictionary dictionaryWithObjectsAndKeys: description.font,
NSFontAttributeName,
paragraphStyle,
NSParagraphStyleAttributeName,
nil];
CGRect rect = [description.text boundingRectWithSize:CGSizeMake(description.size.width, FLT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attrDict
context:nil];
CGSize size = rect.size;
_infoScrollView.contentSize = CGSizeMake(_contentsOnInfoView.frame.size.width,description.frame.origin.y + size.height + 20)
你应该在
中编写你的代码-(void) viewDidLayoutSubviews {}
在这种方法中,所有组件都有根据 运行 设备尺寸的框架。并在出现视图之前执行。
我刚找到答案,在 UI 中有一行将描述与一些信息分开!我只是计算该行的 y
并总结描述 height
:
_descriptions.scrollEnabled = NO;
[_descriptions sizeToFit];
_infoScrollView.contentSize = CGSizeMake(_infoView.frame.size.width, _line.frame.origin.y + _descriptions.bounds.size.height);
现在可以正常使用了!