如何在 uinavigationbar 中的特定位置添加项目?
Posted
技术标签:
【中文标题】如何在 uinavigationbar 中的特定位置添加项目?【英文标题】:how to add items in uinavigationbar at a specific position? 【发布时间】:2013-06-06 09:49:21 【问题描述】:我正在为 iphone 开发一个应用程序,并且在导航栏中的特定位置添加多个 UILabel
时遇到一些问题。
我想要的是下面的图片
在上图中,有一个后退按钮和一个imageview
,如箭头标记所示。除此之外,所有白框都用于不同的UILabels
在导航栏中显示。
导航栏中只有一个UIImageView
,左栏按钮只有一个。现在的问题是我不知道如何在导航栏中的特定位置添加多个UILabel
。
到目前为止,我所做的只是添加按钮和 UIImageView
与右栏按钮数组或左栏按钮数组,但只添加顺序中的项目。
那么任何人都可以指导我如何在特定位置添加 UILabel 或任何其他项目..
【问题讨论】:
【参考方案1】:您可以添加多个 UIlabel 或 Image,如下图所示:-
这可以使用下面的代码来完成,您可以更改 Label 和 imageView 框架并按照您的要求放置
- (void)viewDidLoad
UIView *btn = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)];
UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(5, 25, 200, 16)];
label.tag = 1;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentLeft;
label.textColor = [UIColor whiteColor];
label.text = @"My first lable";
label.highlightedTextColor = [UIColor whiteColor];
[btn addSubview:label];
[label release];
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 200, 16)];
label.tag = 2;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentRight;
label.textColor = [UIColor whiteColor];
label.text = @"second line";
label.highlightedTextColor = [UIColor whiteColor];
[btn addSubview:label];
[label release];
UIImageView *imgviw=[[UIImageView alloc]initWithFrame:CGRectMake(170, 10, 20, 20)];
imgviw.backgroundColor = [UIColor blackColor];
imgviw.image=[UIImage imageNamed:@"a59117c2eb511d911cbf62cf97a34d56.png"];
[btn addSubview:imgviw];
self.navigationItem.titleView = btn;
【讨论】:
【参考方案2】:可以直接将子视图添加到navigationBar -
UINavigationBar *navBar = navController.navigationBar;
[navBar addSubview: yourLabel];
yourLabel 框架的原点将相对于导航栏
【讨论】:
太棒了,如果问题已关闭,我建议接受答案 苹果不建议直接添加视图作为导航栏的子视图。 我同意,他们通常不喜欢接触任何原生控制器。无论如何,这只是一种方法:)【参考方案3】:试试这个代码
UIView *buttonContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
buttonContainer.backgroundColor = [UIColor clearColor];
UIButton *button0 = [UIButton buttonWithType:UIButtonTypeCustom];
[button0 setFrame: CGRectMake(160, 7 , 40, 30)];
[button0 setTitle:@"Sort" forState:UIControlStateNormal];
button0.titleLabel.font = [UIFont fontWithName:@"Helvetica" size:12];
[button0 setBackgroundImage:[UIImage imageNamed:@"Btn_Sort_Btn_Sort_Places.png"] forState:UIControlStateNormal];
[button0 addTarget:self action:@selector(sortAction) forControlEvents:UIControlEventTouchUpInside];
[button0 setShowsTouchWhenHighlighted:YES];
[buttonContainer addSubview:button0];
self.navigationItem.titleView = buttonContainer;
UILabel *lbl_title = [[UILabel alloc] initWithFrame:CGRectMake(10, 0 , 140, 40)];
lbl_title.text = str_HeaderTitle;
lbl_title.textColor = [UIColor whiteColor];
lbl_title.font = [UIFont fontWithName:@"Helvetica-Bold" size:16];
lbl_title.backgroundColor = [UIColor clearColor];
lbl_title.textAlignment = NSTextAlignmentCenter;
[buttonContainer addSubview:lbl_title];
【讨论】:
【参考方案4】:您可以设置任意视图而不是视图控制器的标题:
myViewController.navigationItem.titleView = someView;
请注意,视图的框架很可能会被限制为leftBarButtonItem
和rightBarButtonItem
腾出空间。
【讨论】:
【参考方案5】:UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(50, 2, 20, 15)];
[label setBackgroundColor:[UIColor greenColor]];
UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(40, 20, 150, 10)];
[imgView setBackgroundColor:[UIColor redColor]];
[[self.navigationController navigationBar] addSubview:label];
[self.navigationController.navigationBar addSubview:imgView];
【讨论】:
【参考方案6】:看看这段代码。经过一些修改,它应该可以解决您的问题:
UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
[imageButton setFrame:CGRectMake(15, 0, 57, 44)];
[imageButton setBackgroundImage:[UIImage imageNamed:@"someImage.png"] forState:UIControlStateNormal];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(140, 0, 250, 44)];
[titleLabel setText:@"some title"];
[titleLabel setBackgroundColor:[UIColor clearColor]];
[titleLabel setTextColor:[UIColor whiteColor]];
[titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
[self.navigationController.navigationBar addSubview:imageButton];
[self.navigationController.navigationBar addSubview:titleLabel];
只需修改CGRectMake()
中的值以满足您的需要。
【讨论】:
以上是关于如何在 uinavigationbar 中的特定位置添加项目?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 uinavigationbar 中的特定位置添加项目?
如何在 Swift 中更改 UINavigationBar 中的编辑/完成按钮标题 [重复]