美文网首页
UITextView 字体垂直居中水平居中显示

UITextView 字体垂直居中水平居中显示

作者: iaiayao | 来源:发表于2018-02-23 14:56 被阅读111次

    躺尸好久,还是发在这里做笔记用吧。

    #import <UIKit/UIKit.h>

    @interface TMVerticallyCenteredTextView : UITextView

    @end

    #import "TMVerticallyCenteredTextView.h"

    @interface TMVerticallyCenteredTextView()

    @end

    @implementation TMVerticallyCenteredTextView

    - (id)initWithFrame:(CGRect)frame {

        if (self = [super initWithFrame:frame]) {

            self.textAlignment = NSTextAlignmentCenter;

            [self addObserver:self forKeyPath:@"contentSize" options: (NSKeyValueObservingOptionNew) context:NULL];

        }

        return self;

    }

    - (id)initWithCoder:(NSCoder )aDecoder {

        if (self = [super initWithCoder:aDecoder]){

            self.textAlignment = NSTextAlignmentCenter;

            [self addObserver:self forKeyPath:@"contentSize" options: (NSKeyValueObservingOptionNew) context:NULL];

        }

        return self;

    }

    -(void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary )change context:(void )context {

        if ([keyPath isEqualToString:@"contentSize"]) {

            UITextView *tv = object;

            CGFloat deadSpace = ([tv bounds].size.height - [tv contentSize].height);

            CGFloat inset = MAX(0, deadSpace/2.0);

            tv.contentInset = UIEdgeInsetsMake(inset, tv.contentInset.left, inset, tv.contentInset.right);

        }

    }

    - (void)dealloc {

        [self removeObserver:self forKeyPath:@"contentSize"];

    }

    @end

    相关文章

      网友评论

          本文标题:UITextView 字体垂直居中水平居中显示

          本文链接:https://www.haomeiwen.com/subject/dvdxxftx.html