IOS在导航栏上居中显示分段控件(UISegmentedControl)

本文介绍了如何在iOS导航栏中正确居中式显示UISegmentedControl的方法,包括设置titleView与直接添加至navigationItem两种方式,并提供了实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做一个东西,需要在导航栏上居中显示一个UISegmentedControl,查看网上的一些代码,大部分都是采用self.navigationItem.rightBarButtonItem = segButton的形式,但是这样不会居中,又尝试在titleView上add segmentControl,发现也不行,经过研究,发现只要设置navigationBar的titleView就可以了。

代码如下:

NSArray *segmentedArray = [NSArray arrayWithObjects:"左边","右边",nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedArray];
segmentedControl.frame = CGRectMake(0.0, 0.0, 290, 30.0);
segmentedControl.selectedSegmentIndex = 0;
segmentedControl.tintColor = [UIColor grayColor];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
[segmentedControl addTarget:self  action:@selector(indexDidChangeForSegmentedControl:)
                    forControlEvents:UIControlEventValueChanged];
//方法1
//[self.navigationController.navigationBar.topItem setTitleView:segmentedControl];
//方法2
[self.navigationItem setTitleView:segmentedControl];
[segmentedControl release];



有两种方法可以设置:

1:

[self.navigationController.navigationBar.topItem setTitleView:segmentedControl];
2:

[self.navigationItem setTitleView:segmentedControl];

这两种方式都可以居中显示。


如果不是想居中显示,而是要放在偏右的方位的话,那么就是用self.navigationItem.rightBarButtonItem = segButton的形式,代码如下:

NSArray *segmentedArray = [NSArray arrayWithObjects:"左边","右边",nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedArray];
segmentedControl.frame = CGRectMake(0.0, 0.0, 290, 30.0);
segmentedControl.selectedSegmentIndex = 0;
segmentedControl.tintColor = [UIColor grayColor];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
[segmentedControl addTarget:self action:@selector(indexDidChangeForSegmentedControl:)
                    forControlEvents:UIControlEventValueChanged];
UIBarButtonItem *segButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
[segmentedControl release];
self.navigationItem.rightBarButtonItem = segButton;
[segButton release];


如有疑问可以发邮件到 friday_holiday@163.com进行讨论


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值