UILabel 的 NSTextAlignmentCenter 不起作用
NSTextAlignmentCenter for UILabel not working
我在单独的 nib
文件中有一个带有 UILabel
的视图。我在 UIViewController
的 viewWillAppear:
方法中加载了这个 nib
文件,我试图设置 UILabel
的 textAlignment
属性那里,这样:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
for (UIView *view in views) {
if([view isKindOfClass:[UIView class]])
{
self.customView = (MyView *)view;
((MyView *)self.customView).myLabel.textAlignment = NSTextAlignmentCenter;
((MyView *)self.customView).myLabel.text = @"My text";
[((MyView *)self.customView).myLabel sizeToFit];
[self.view addSubview:self.customView];
}
}
}
但是当我 运行 应用程序时,文本没有居中,即使我在 nib
中设置了对齐方式(我可以看到文本在 Xcode 中居中IB)。这是适用于 iOS 7+ 的应用程序,我使用的是 Xcode 6.1.1。为什么这不起作用?
谢谢
[((MyView *)self.customView).myLabel sizeToFit];
删除这一行...
我想问题出在:
[((MyView *)self.customView).myLabel sizeToFit];
居中不会更改标签的 frame.origin.x
。
但是,如果您之后应用 sizeToFit
,所有内容将集中在一个较小的区域(不更改 x 偏移量)并且会感觉它不再居中。
您正在调用 [((MyView *)self.customView).myLabel sizeToFit];
并且来自文档 sizeToFit
"Resizes and moves the receiver view so it just encloses its subviews."。
如果文本填满标签,您应该无法将文本居中 UILabel
。
尝试删除此方法调用,看看会发生什么。
写这行代码
((MyView *)self.customView).myLabel.textAlignment = NSTextAlignmentCenter;
在这个之后
[self.view addSubview:self.customView];
对于带有 NSTextAlignmentCenter 的 UILabel,之后您可以像这样将标签居中:
float w = self.view.frame.size.width;
title.text = @"What do you want to say?";
[title sizeToFit];
title.frame = CGRectMake((w-title.frame.size.width)/2, title.frame.origin.y, title.frame.size.width, title.frame.size.height);
我在单独的 nib
文件中有一个带有 UILabel
的视图。我在 UIViewController
的 viewWillAppear:
方法中加载了这个 nib
文件,我试图设置 UILabel
的 textAlignment
属性那里,这样:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
for (UIView *view in views) {
if([view isKindOfClass:[UIView class]])
{
self.customView = (MyView *)view;
((MyView *)self.customView).myLabel.textAlignment = NSTextAlignmentCenter;
((MyView *)self.customView).myLabel.text = @"My text";
[((MyView *)self.customView).myLabel sizeToFit];
[self.view addSubview:self.customView];
}
}
}
但是当我 运行 应用程序时,文本没有居中,即使我在 nib
中设置了对齐方式(我可以看到文本在 Xcode 中居中IB)。这是适用于 iOS 7+ 的应用程序,我使用的是 Xcode 6.1.1。为什么这不起作用?
谢谢
[((MyView *)self.customView).myLabel sizeToFit];
删除这一行...
我想问题出在:
[((MyView *)self.customView).myLabel sizeToFit];
居中不会更改标签的 frame.origin.x
。
但是,如果您之后应用 sizeToFit
,所有内容将集中在一个较小的区域(不更改 x 偏移量)并且会感觉它不再居中。
您正在调用 [((MyView *)self.customView).myLabel sizeToFit];
并且来自文档 sizeToFit
"Resizes and moves the receiver view so it just encloses its subviews."。
如果文本填满标签,您应该无法将文本居中 UILabel
。
尝试删除此方法调用,看看会发生什么。
写这行代码
((MyView *)self.customView).myLabel.textAlignment = NSTextAlignmentCenter;
在这个之后
[self.view addSubview:self.customView];
对于带有 NSTextAlignmentCenter 的 UILabel,之后您可以像这样将标签居中:
float w = self.view.frame.size.width;
title.text = @"What do you want to say?";
[title sizeToFit];
title.frame = CGRectMake((w-title.frame.size.width)/2, title.frame.origin.y, title.frame.size.width, title.frame.size.height);