UINavigationBar 标题内的 UISegmentedControl 看起来未格式化
Posted
技术标签:
【中文标题】UINavigationBar 标题内的 UISegmentedControl 看起来未格式化【英文标题】:UISegmentedControl inside title of UINavigationBar looks unformatted 【发布时间】:2013-03-13 08:24:56 【问题描述】:我正在尝试在 UINavigationController 的标题中添加 UISegmentedControl。但是,格式看起来像这样(即丑陋)。
当我希望它看起来像这样时(漂亮:)。谁能帮忙??
我读过 Red Artisan here 的流行示例。但是我并没有将其作为我的第一个视图(就像 Red Artisan 那样),所以我已经将很多代码从 App Delegate 中移出。在 App Delegate 中,我确实将此屏幕设置为 UINavigationController,其 rootView 为 UIViewController。
GenInfoViewController *genInfoController = [[GenInfoViewController alloc] initWithNibName:@"GenInfoViewController" bundle:nil];
UINavigationController *genInfoNavController = [[UINavigationController alloc] initWithRootViewController:genInfoController];
然后在 GenInfoViewController.m 的 viewDidLoad 中执行以下操作:
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Info",@"Map"]];
self.navigationItem.titleView = self.segmentedControl;
【问题讨论】:
【参考方案1】:要设置分段控件的样式,请将segmentedControlStyle
属性设置为以下之一:
UISegmentedControlStylePlain
UISegmentedControlStyleBordered
UISegmentedControlStyleBar
UISegmentedControlStyleBezeled
例如:
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Info",@"Map"]];
self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
self.navigationItem.titleView = self.segmentedControl;
这里有一些关于样式段控件的相关 Q+As:
Custom segment control Remove rounded corner Change font size Change colour of selected segment如果您想尝试自定义分段控件,请查看所有可用的 CocoaControls 和 CocoaPods。
【讨论】:
segmentedControlStyle
对于 ios7+ 已弃用。【参考方案2】:
是的,您需要在 UISegmented 控件上设置属性“segmentedControlStyle”。
您的选择如下:
typedef enum
UISegmentedControlStylePlain,
UISegmentedControlStyleBordered,
UISegmentedControlStyleBar, // This is probably the one you want!
UISegmentedControlStyleBezeled,
UISegmentedControlStyle;
所以下面的方法应该可以解决问题:
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Info",@"Map"]];
self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
self.navigationItem.titleView = self.segmentedControl;
您可能还需要考虑设置分段控件的“tintColor”。
self.segmentedControl = [UIColor blackColour];
会给你留下这样的东西:
显然,您还可以进行许多其他自定义操作。看看这里的文档:http://developer.apple.com/library/ios/#documentation/uikit/reference/UISegmentedControl_Class/Reference/UISegmentedControl.html
【讨论】:
以上是关于UINavigationBar 标题内的 UISegmentedControl 看起来未格式化的主要内容,如果未能解决你的问题,请参考以下文章
带有 TableView 的 UINavigationBar 和 UITabBar 内的分段控件
UINavigationController改变UINavigationBar导航条标题颜色跟字体