• 笔记:UITextView内容垂直居中方法


    - (void)contentSizeToFit
    {
        //先判断一下有没有文字(没文字就没必要设置居中了)
        if([self.textView.text length]>0)
        {
            //textView的contentSize属性
            CGSize contentSize = self.textView.contentSize;
            //textView的内边距属性
            UIEdgeInsets offset;
            CGSize newSize = contentSize;
            
            //如果文字内容高度没有超过textView的高度
            if(contentSize.height <= self.textView.frame.size.height)
            {
                //textView的高度减去文字高度除以2就是Y方向的偏移量,也就是textView的上内边距
                CGFloat offsetY = (self.textView.frame.size.height - contentSize.height)/2;
                offset = UIEdgeInsetsMake(offsetY, 0, 0, 0);
            }
            else          //如果文字高度超出textView的高度
            {
                newSize = self.textView.frame.size;
                offset = UIEdgeInsetsZero;
                CGFloat fontSize = 18;
    
               //通过一个while循环,设置textView的文字大小,使内容不超过整个textView的高度(这个根据需要可以自己设置)
                while (contentSize.height > self.textView.frame.size.height)
                {
                    [self.textView setFont:[UIFont fontWithName:@"Helvetica Neue" size:fontSize--]];
                    contentSize = self.textView.contentSize;
                }
                newSize = contentSize;
            }
            
            //根据前面计算设置textView的ContentSize和Y方向偏移量
            [self.textView setContentSize:newSize];
            [self.textView setContentInset:offset];
            
        }
    }

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

  • 相关阅读:
    框架
    AS常用快捷键
    AS快捷键
    AS布局篇
    Android连载4-自定义控件的单位和尺寸
    Java连载107-join方法、锁(synchronized)机制以及原理
    HTML连载81-CSS书写格式、一个手机页面的基本结构
    Android连载3-定制ListView的界面、性能优化以及绑定点击事件
    JavaScript连载3-变量内存分析、常量、数据类型
    Java连载106-sleep方法以及中断方式、yield方法
  • 原文地址:https://www.cnblogs.com/sheer-code/p/10719481.html
Copyright © 2020-2023  润新知