0

我正在尝试在 UINavigationController 的标题中添加 UISegmentedControl。然而,格式看起来像这样(即它的丑陋)。

在此处输入图像描述

当我希望它看起来像这样时(漂亮:)。有人可以帮忙吗??

在此处输入图像描述

我在这里阅读了 Red Artisan 的流行示例。但是我并没有将其作为我的第一个视图(就像 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;
4

2 回答 2

0

要设置分段控件的样式,请将segmentedControlStyle属性设置为下列之一:

UISegmentedControlStylePlain
UISegmentedControlStyleBordered
UISegmentedControlStyleBar
UISegmentedControlStyleBezeled

例如:

self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Info",@"Map"]];
self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
self.navigationItem.titleView = self.segmentedControl;

     这里有一些关于样式段控件的相关 Q+As:

如果您想尝试自定义分段控件,请查看所有可用的CocoaControlsCocoaPods

于 2013-03-23T14:41:45.660 回答
0

是的,您需要在 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];

会给你留下这样的东西:

UI分段控制

显然,您也可以进行许多其他自定义。看看这里的文档:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UISegmentedControl_Class/Reference/UISegmentedControl.html

于 2013-03-23T14:42:00.570 回答