gpt4 book ai didi

iOS自定义形状导航栏

转载 作者:可可西里 更新时间:2023-11-01 06:20:47 25 4
gpt4 key购买 nike

我想开发带有自定义导航栏的应用程序,如下图所示:

enter image description here

enter image description here

我认为我需要继承 UINavigationBar 并将按钮添加到导航栏的中心,但我真的不知道如何使导航栏看起来像图像上的那样。你能给我建议我该怎么做吗,任何类型文档的链接都很棒!

关于 navBar 的类似问题对我没有帮助:

编辑:

接下来我的想法是:使自定义导航栏的高度比默认大小稍大,并添加带有箭头的背景图像,并在边缘添加一些透明度。

最佳答案

如果您想要一个按钮(您可能确实想要),您可以通过子类化 UINavigationBar 来完全实现它。你应该记住 UINavigationBarheight 是只读属性。

样式但不可点击:

所以让我们假设我们将导航栏子类化并在那里添加按钮。你可以这样做,它会看起来很棒。例如:

- (void)drawRect:(CGRect)rect
{
self.backgroundColor = [UIColor lightGrayColor];
UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(self.frame.size.width/2-50, 0 , 100, 100)];
[myButton setBackgroundColor:[UIColor lightGrayColor]];
[myButton setTitle:@"Normal" forState:UIControlStateNormal];
[myButton setTitle:@"Highlighted" forState:UIControlStateHighlighted];
[self addSubview:myButton];
[self sendSubviewToBack:myButton];
}

但是您将面临一个问题,即您的按钮在 UINvaigationBar 下是不可粘贴的。 (我在答案底部贴了一张图片)

所以显然没有您想要遵循的路径。甚至不要尝试。

样式但不可点击2:

你可以在你的导航栏子类中覆盖这个方法

- (CGSize) sizeThatFits:(CGSize)size  {
return CGSizeMake(custom_width, custom_height);
}

然后使用 UIBezierPath 来屏蔽它

正确的(可点击的)方式:

您必须在 UINavigationBar 上创建一个 View 。我将在这里做的(如果你想要它到每个屏幕)是:

  1. 创建一个 UIViewController 类别,它可以绘制(例如 - 这是最简单的方法)UIButton
  2. 根据需要设置此“UIButton”的样式(如果需要
  3. 将操作固定到“UIButton”:[btn addTarget:self action:@selector(menuShow:) forControlEvents:UIControlEventTouchUpInside];
  4. menuShow: 方法应在您的类别
  5. 中声明
  6. 每次要重绘 View Controller 时都可以调用绘图按钮。

如您所见,将有两个单独的 View :UINavigationBarUIButton。这允许您在这个小按钮下设置内容并使其可点击。

那么为什么不隐藏导航栏,而使用不同的 View 呢?因为 iOS7 ;) 例如,当 Apple 在 iOS7 中更改它时,你必须重建你的伪 NavigationBar,只有额外的 View ,你不需要做任何事情。

enter image description here

关于iOS自定义形状导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19878288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com