IOS 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];

    }
}



作者:木头Lee
链接:http://www.jianshu.com/p/5e4cf8488bfd
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/yxl123546/article/details/75337859