itg*_*awa 17 iphone title uinavigationbar
我有一个自定义UINavigationBar标题和一个自定义后退按钮.我的问题是标题不是以iPhone为中心.就好像我的后退按钮将标题推到了右边.任何想法我怎么能集中它?
int height = self.navigationController.navigationBar.frame.size.height;
int width = self.navigationController.navigationBar.frame.size.width;
UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width + 300, 20)];
navLabel.backgroundColor = [UIColor whiteColor];
navLabel.textColor = [UIColor redColor];
navLabel.font = [UIFont fontWithName:@"Helvetica" size:30];
navLabel.textAlignment = UITextAlignmentCenter;
self.navigationItem.titleView = navLabel;
[navLabel release];
((UILabel *)self.navigationItem.titleView).text = self.title;
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑我删除了多余的代码并添加了这张图片:
注意标题是如何被推过来容纳按钮的....
Boc*_*ica 40
iOS正在执行此操作,因为您初始化的帧始终是300 +宽度像素.它试图使整个框架居中,框架比它想要的空间大(因为按钮),因此你的标签被推到右边.您需要做的是为navLabel的Frame提供所需的最小尺寸.
因此,如果您的文本只有100px宽,但帧是400px,那么iOS正试图将400px置于导航标题内,并且没有足够的空间.当您将大小设置为所需的实际100px时,iOS将正确地对齐您的标题,因为有足够的空间来居中100px.
下面的代码片段可以帮助您检测框架所需的最小尺寸,具体取决于您尝试放入的字体和文本.确保标签的框架尽可能小,但不超过最大宽度.(导航栏的宽度).
UIFont* titleFont = [UIFont fontWithName:@"Helvetica" size:30];
CGSize requestedTitleSize = [titleText sizeWithAttributes:@{NSFontAttributeName: titleFont}];
CGFloat titleWidth = MIN(maxTitleWidth, requestedTitleSize.width);
UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, titleWidth, 20)];
navLabel.backgroundColor = [UIColor whiteColor];
navLabel.textColor = [UIColor redColor];
navLabel.font = [UIFont fontWithName:@"Helvetica" size:30];
navLabel.textAlignment = NSTextAlignmentCenter;
navLabel.text = titleText;
self.navigationItem.titleView = navLabel;
Run Code Online (Sandbox Code Playgroud)
我之前遇到过同样的问题.我有一个UINavigationbar
右键和左键.我想把图像放在中心UINavigationbar
.所以我不得不把图像转换成一个UIView
与width
0的图像自身得到的x值是自己的一半width
.
UINavigationItem *item = navigationController.topViewController.navigationItem;
UIView *backView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 30)];
[img_logo setFrame:CGRectMake(-45, 5, 90, 20)];
[backView addSubview:img_logo];
item.titleView = backView;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28796 次 |
最近记录: |