美文网首页
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