ios - 将分段控件添加到导航栏并使用按钮保留标题

标签 ios uinavigationbar uisegmentedcontrol

我想向导航栏添加分段控件,但同时保留标题和按钮,就像在 iOS 7 Appstore 购买部分 ( example )

我试过添加分段控件作为标题 View ,然后使用提示作为标题,但按钮与分段控件处于同一级别。

最佳答案

我找到了两个解决方案:

1) 根据 neural5torm 的建议,您可以将分段控件添加到与导航栏背景颜色相同的 UIView

可以这样去掉UINavigationBar的细线:

for (UIView *view in self.navigationController.navigationBar.subviews)
{
    for (UIView *view2 in view.subviews)
    {
        if ([view2 isKindOfClass:[UIImageView class]])
        {
            [view2 removeFromSuperview];
        }
    }
}

这对于非半透明 导航栏是可以的。



如果你想要一个半透明导航栏:
2) 子类 UINavigationBar 通过覆盖 sizeThatFits

创建一个更高的条
- (CGSize)sizeThatFits:(CGSize)size
{
    size.width = self.frame.size.width;
    size.height = your height (probably 88.0f);
    return size;
}


要使用您的自定义导航栏:

UINavigationController *navController = [[UINavigationController alloc] initWithNavigationBarClass:[YouNavigationBar class] toolbarClass:nil];
[navController setViewControllers:@[viewController]];


标题和按钮项目将在底部。调整它们的垂直位置(在您的自定义导航栏的初始位置或通过外观代理)

// Title view
[self setTitleVerticalPositionAdjustment:-dy forBarMetrics:UIBarMetricsDefault];

// Button item as icon/image 
[[UIBarButtonItem appearanceWhenContainedIn:[YourCustomNavigationBar class], nil] setBackgroundVerticalPositionAdjustment:-dy forBarMetrics:UIBarMetricsDefault];

看UIBarButtonItem类引用,还有setTitlePositionAdjustment等后退按钮的方法


创建分段控件时,将其添加到导航栏

[self.navigationController.navigationBar addSubview:segmentedControl];


分段控件将位于顶部。通过覆盖自定义导航栏中的 didAddSubview 调整其垂直位置

- (void)didAddSubview:(UIView *)subview
{
    [super didAddSubview:subview];

    if ([subview isKindOfClass:[UISegmentedControl class]])
    {
        CGRect frame = subview.frame;
        frame.origin.y += your extra height (probably 44.0f);
        subview.frame = frame;
    }
}

关于ios - 将分段控件添加到导航栏并使用按钮保留标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813563/

相关文章:

iOS 扩展 "Failed to find a valid app with bundleID"& "Error was encountered trying to find service extension"

ios - Swift 中的客户 UINavigation Controller

iphone - UISegmentedControl 不更新 View

ios - Bar 分段控件在 iOS7 iphone 5s 真机上的 Toolbar 中有 padding

ios - 分段控件在每个段中设置属性标题

ios - 应用程序如何从苹果商店获取更新?

ios - 如何使用 GPUImage 框架保存电影?

ios - 摆脱 UINavigationBar 右侧的空间

iOS菜单标题到导航栏标题动画

iphone - 在 iOS 中创建选项类型菜单