[英]Textview Center Text Alignment IOS 7
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"Hello");
UITextView *tv = object;
CGFloat topCorrect = ([tv bounds].size.height - [tv contentSize].height * [tv zoomScale]) / 2.0;
topCorrect = ( topCorrect < 0.0 ? 0.0 : topCorrect );
tv.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};
}
I am calling it like this in Viewdidload 我在Viewdidload中这样称呼它
[myTextView1 addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];
textView.textAlignment = NSTextAlignmentCenter;
try this on iOS7: 在iOS7上试试这个:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
UITextView *tv = object;
CGFloat height = [tv bounds].size.height;
CGFloat contentheight;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7")) {
contentheight = [tv sizeThatFits:CGSizeMake(tv.frame.size.width, FLT_MAX)].height;
NSLog(@"iOS7; %f %f", height, contentheight);
}else{
contentheight = [tv contentSize].height;
NSLog(@"iOS6; %f %f", height, contentheight);
}
CGFloat topCorrect = height - contentheight;
topCorrect = (topCorrect <0.0 ? 0.0 : topCorrect);
tv.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};
}
to be defined: 被定义为:
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
For swift: 对于swift:
itemTextView.addObserver(self, forKeyPath:"contentSize", options: NSKeyValueObservingOptions.New, context: nil)
and 和
override func observeValueForKeyPath(keyPath: String!, ofObject object: AnyObject!, change: [NSObject : AnyObject]!, context: UnsafeMutablePointer<Void>) {
var tv : UITextView = object as UITextView;
var height = tv.bounds.size.height;
var contentheight = tv.sizeThatFits(CGSizeMake(tv.frame.size.width,1000)).height
var topCorrect : CGFloat = height - contentheight;
if(topCorrect < 0) {
topCorrect = 0
}
tv.contentOffset = CGPointMake(0, -topCorrect/2)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.