ios开发导航栏,ios桌面导航

iOS开发——导航栏透明

导航栏不同于其他view,简单的设置alpha并不能达到预想的效果。我在多次尝试之后得出一个最有效的方式。

在黔江等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站设计、外贸营销网站建设 网站设计制作按需规划网站,公司网站建设,企业网站建设,高端网站设计,营销型网站建设,成都外贸网站建设,黔江网站建设费用合理。

简单的让导航栏变透明只需要设置下面三个属性:

但是这样做有个问题,就是返回按钮和title一起变透明了,解决方法是不要通过alpha来改变透明度,而是通过改变backgroundImage的透明度来实现。如何改变图片的透明度呢,送上一个方法,你只需要创建一个UIImage的分类,实现这个方法,在需要的时候引入这个分类就可以使用了。

这样以来,你只需要将你需要的图片(也许是一张纯色)通过 setBackgroundImage:forBarMetrics: 方法设置为背景图片即可。

通过view的滚动实现一开始navigationBar隐藏,然后渐显的效果还难吗?

不过你可能发现,页面刚刚显示还没有滚动的时候,导航栏又不透明了,如果你不幸遇到这种状况,其实也很简单

是不是非常简单?喜欢的话记得点红心♥️啊。也欢迎评论与我交流????

iOS开发 - iOS15导航栏适配(Object-C、Swift)

Swift版导航栏适配参考

在iOS 13中给导航的 UINavigationBar 增加了 scrollEdgeAppearance 属性应用在iOS 14及更早版本的大标题导航栏上,在iOS 15中 scrollEdgeAppearance 属性适用于所有的导航栏

官方解释:描述当关联的UIScrollView到达与导航条相邻的边缘(导航条的上边缘)时要使用的导航条的外观属性。如果没有设置,将使用修改后的standardAppearance

scrollEdgeAppearance 与 standardAppearance 一样同属于 UINavigationBarAppearance 类型 父类是 UIBarAppearance

其中影响导航栏颜色、阴影涉及到以下属性

因为 scrollEdgeAppearance = nil ,当前控制器如果使用有 ScrollView 类的控件,当 ScrollView 向上滚动时 scrollEdgeAppearance 会默认使用 standardAppearance 的属性效果。所以 backgroundEffect 和 shadowColor 属性需要显式设置为nil,以防止 backgroundEffect、shadowColor 有颜色值影响导航栏透明效果。

下一篇:Swift版导航栏适配

PERFECT!

iOS开发 导航栏出现多次push同一个页面问题解决办法

在点击push下一个页面时,因为各种原因,点一下cell或按钮没有响应,用户可能就多点几下,这时候会打开好几个一样的页面。

这是因为push后的页面有耗时操作或者刚好push到另一个页面时,另一个页面正好在reloadData卡住主线程。造成点击cell时卡住了。

这时,我们可以通过重写导航控制器的方法来解决这个问题。

#import UIKit/UIKit.h

@interfaceNaviViewController : UINavigationController

@end

#import "NaviViewController.h"

@interfaceNaviViewController ()

// 记录push标志

@property(nonatomic,getter=isPushing)BOOLpushing;

@end

@implementationNaviViewController

- (void)viewDidLoad {

      [superviewDidLoad];

       self.delegate=self;

}

- (void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated {

    if(self.pushing==YES) {

             NSLog(@"被拦截");

             return;

    }else{

             NSLog(@"push");

             self.pushing=YES;

    }

[superpushViewController:viewControlleranimated:animated];

}

#pragma mark - UINavigationControllerDelegate

-(void)navigationController:(UINavigationController*)navigationControllerdidShowViewController:(UIViewController*)viewControlleranimated:(BOOL)animated {

         self.pushing=NO;

}

@end


分享名称:ios开发导航栏,ios桌面导航
文章网址:http://scyanting.com/article/dsishpg.html