经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
笔记:UITextView内容垂直居中方法
来源:cnblogs  作者:纯粹的code  时间:2019/4/17 9:02:17  对本文有异议
  1. - (void)contentSizeToFit
  2. {
  3. //先判断一下有没有文字(没文字就没必要设置居中了)
  4. if([self.textView.text length]>0)
  5. {
  6. //textView的contentSize属性
  7. CGSize contentSize = self.textView.contentSize;
  8. //textView的内边距属性
  9. UIEdgeInsets offset;
  10. CGSize newSize = contentSize;
  11. //如果文字内容高度没有超过textView的高度
  12. if(contentSize.height <= self.textView.frame.size.height)
  13. {
  14. //textView的高度减去文字高度除以2就是Y方向的偏移量,也就是textView的上内边距
  15. CGFloat offsetY = (self.textView.frame.size.height - contentSize.height)/2;
  16. offset = UIEdgeInsetsMake(offsetY, 0, 0, 0);
  17. }
  18. else //如果文字高度超出textView的高度
  19. {
  20. newSize = self.textView.frame.size;
  21. offset = UIEdgeInsetsZero;
  22. CGFloat fontSize = 18;
  23. //通过一个while循环,设置textView的文字大小,使内容不超过整个textView的高度(这个根据需要可以自己设置)
  24. while (contentSize.height > self.textView.frame.size.height)
  25. {
  26. [self.textView setFont:[UIFont fontWithName:@"Helvetica Neue" size:fontSize--]];
  27. contentSize = self.textView.contentSize;
  28. }
  29. newSize = contentSize;
  30. }
  31. //根据前面计算设置textView的ContentSize和Y方向偏移量
  32. [self.textView setContentSize:newSize];
  33. [self.textView setContentInset:offset];
  34. }
  35. }

原理:由于textView是继承自UIScrollview,所以会有ContentSize属性。所以可以通过文字内容的高度(也就是ContentSize)的高度和textView的高度之间的差值,设置内边距,就相当于把内容居中了。

原文链接:http://www.cnblogs.com/sheer-code/p/10719481.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号