Mac OS 开发 NSTextField文字不居中问题的解决方法

今年三月份,进入Coacoa OS 开发 ,现在算来已有半年。Mac 开发最让人烦躁的还是UI问题,如果手写代码,那你的效率将会变得非常低,所以xib在Mac OS开发中还是很重要的。然而,在使用NSTextField过程中你会发现一旦你设置其高度大于24,就会出现文字不居中的问题,本文主要解决的就是文本不居中的问题。

首先,自己定义一个继承NSTextFieldCell的类,命名为QYTextFiledCellCenter。实现代码如下:

#import <Cocoa/Cocoa.h>
@interface QYTextFiledCellCenter : NSTextFieldCell
//编辑状态先设置文本的Y坐标
@property (nonatomic) IBInspectable CGFloat oringeY;
@end

上面是.h文件。下面的是.m的文件实现:

#import "QYTextFiledCellCenter.h"
@implementation QYTextFiledCellCenter
- (NSRect)titleRectForBounds:(NSRect)rect{
NSRect titleRect = [super titleRectForBounds:rect];
CGFloat minimHeight = self.cellSize.height;
titleRect.origin.y += (titleRect.size.height - minimHeight)/2;
titleRect.size.height = minimHeight;
return titleRect;
}

-(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView{
  [super drawWithFrame:cellFrame inView:controlView];
}
-(void)selectWithFrame:(NSRect)rect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)delegate start:(NSInteger)selStart length:(NSInteger)selLength{
  
  CGRect titleRect =  [self titleRectForBounds:rect];
  titleRect.origin.y += self.oringeY;
  [super selectWithFrame:titleRect inView:controlView editor:textObj delegate:delegate    start:selStart length:selLength];
 NSLog(@"titleRect = %@",NSStringFromRect(titleRect));

}
@end

解释一下:上面的两个方法中

- (NSRect)titleRectForBounds:(NSRect)rect 

是text-type Cell类型所调用的函数,这个函数主要的作用就是调整文本信息被描绘的位置,这里我们设置了居中。

-(void)selectWithFrame:(NSRect)rect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)delegate start:(NSInteger)selStart length:(NSInteger)selLength

最后,用图片演示一下如何在xib中使用,选中xib中的一个label打开右边的inspector 栏,选择第三个按钮(identify inspector),然后再Custom Class 一栏填写QYTextFiledCellCenter 图片如下:


textcellCenter.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,216评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,680评论 7 249
  • 01 坂元裕二不愧是金句王,他的《四重奏》还没来得及看,已经被传出来的金句安利了。 我们都知道:能够直击一个人心灵...
    观观之洲阅读 5,776评论 2 1
  • 想成为人上人,最体面的方式,是投资在自己身上。让自己成为有钱人,成为永不贬值的稀缺资源,这样,不但不乏购买者,还掌...
    nzdwzdnm阅读 2,350评论 0 0
  • 突然特别难受啊,感觉这几个月都没有这么难受过。因为见过的分离太多,也明白很多的分离注定的,所以,早就做好了悲伤的准...
    安静凝望阅读 1,339评论 0 0