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

2018-02-23  本文已影响111人  iaiayao

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

#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

上一篇下一篇

猜你喜欢

热点阅读