`
iaiai
  • 浏览: 2192266 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

巧妙的让导航栏透明的悬浮在ViewController上

 
阅读更多
分享一个很简单的让系统的导航栏透明的悬浮在ViewController上效果,就几行代码!
class SomeViewController : UIViewController {  
    ...  
    override func viewDidLoad() {  
        super.viewDidLoad()  
        // Do any additional setup after loading the view, typically from a nib.  
          
//        self.edgesForExtendedLayout = .All      // 要设置成全屏布局才能看到效果,默认就是全屏的  
//        self.navigationController?.navigationBar.translucent = true // 必须开启半透明效果,默认就是开启的  
        let clearImage = UIImage.colorImage(UIColor.clearColor())   // 创建一个透明的图片  
        self.navigationController?.navigationBar.setBackgroundImage(clearImage, forBarMetrics: .Default)  
        self.navigationController?.navigationBar.shadowImage = clearImage  
    }  
    ...  
}

为了方便,扩展了一下 UIImage
//MARK:- 创建一个颜色图片  
extension UIImage {  
    class func colorImage(color: UIColor) -> UIImage {  
        return self.colorImage(color, size: CGSize(width: 2, height: 2))  
    }  
    class func colorImage(color: UIColor, size: CGSize) -> UIImage {  
        UIGraphicsBeginImageContextWithOptions(size, false, 0)  
        color.setFill()  
        UIRectFillUsingBlendMode(CGRectMake(0, 0, size.width, size.height), kCGBlendModeXOR)  
        let cgImage = CGBitmapContextCreateImage(UIGraphicsGetCurrentContext())  
        UIGraphicsEndImageContext()  
        return UIImage(CGImage: cgImage)!.stretchableImageWithLeftCapWidth(1, topCapHeight: 1)  
    }  
}

效果如下
  • 大小: 46.3 KB
分享到:
评论

相关推荐

    导航栏透明

    3. **内容延伸到导航栏下**: 为了让内容能显示在导航栏下方,需要设置`edgesForExtendedLayout`属性: ```swift self.edgesForExtendedLayout = .top ``` 4. **自定义动画**: 如果需要在滚动时改变透明度,可以...

    ios-手势借助导航栏可以切换viewController.zip

    "ios-手势借助导航栏可以切换viewController.zip"这个压缩包文件,显然包含了一个实现通过手势在导航栏侧滑来切换ViewController的解决方案。这种功能常见于许多应用,让用户能够方便地浏览多个视图或内容板块,而...

    几代码实现导航栏透明渐变、实现TabBar中间凸起

    这段代码首先在`viewDidLoad`中设置了导航栏的基础透明状态,然后在`scrollViewDidScroll`中计算出导航栏的透明度,确保其在用户向上滚动时逐渐变为不透明,在向下滚动时恢复透明。 接下来,我们讨论如何实现TabBar...

    swift-导航栏颜色渐变通过给viewController添加属性可方便控制titleitem导航栏颜色变化

    1. `BaseViewController.swift`: 基类,定义了颜色和透明度的属性,并在适当的地方设置了导航栏的样式。 2. `GradientTitleView.swift`: 自定义的渐变标题视图,用于实现标题的渐变效果。 3. `CustomBarButtonItem....

    导航栏渐变透明

    在iOS和Android等移动应用开发中,"导航栏渐变透明"是一种常见的界面设计趋势,它为用户提供了更现代、更动态的视觉体验。这种设计通常涉及到应用的顶部导航栏,当用户滚动页面时,导航栏的颜色会逐渐变淡,甚至变得...

    ios-导航栏透明度变化实现.zip

    在UIKit框架中,UINavigationController是负责管理一系列UIViewController的容器,它会自动添加一个导航栏到每个显示的控制器上。我们可以通过在storyboard中拖拽一个UINavigationController,或者在代码中初始化来...

    滑动导航栏渐变

    这种效果通常在用户滚动TableView或者ScrollView时实现,导航栏的颜色透明度会随着滚动的距离而变化,从而营造出一种沉浸式的效果。在本篇文章中,我们将深入探讨如何在iOS应用中实现这样的功能。 首先,我们要了解...

    半透明ViewController

    同时,也可以结合手势识别或者动画,让半透明ViewController在用户交互时动态变化,提升用户体验。 在提供的`StoryBoardDelegate半透明`文件中,可能包含了如何在Storyboard中设置ViewController的代理以及如何处理...

    swift-runtime实现导航栏封装无需继承动态提供属性控制导航栏样式

    在不修改原有代码的情况下,我们可以通过runtime对对象进行操作,比如在导航栏封装中,我们可以动态地设置导航栏的颜色、字体、透明度等属性。 实现这个功能的关键在于`UINavigationController`的代理方法和KVC...

    iOS 导航栏源代码

    在iOS应用开发中,导航栏(Navigation Bar)是界面设计中的关键组件,它为用户提供了一种在多个屏幕间导航的方式。本资源“iOS 导航栏源代码”提供了一个具体的导航栏实现的源程序代码,这对于理解导航栏的工作原理...

    ios 导航栏上滑隐藏下拉显示

    这需要正确地处理手势的边界条件,避免用户在导航栏已隐藏的情况下继续上滑,或者在导航栏已显示的情况下继续下拉。 6. **处理其他手势冲突**:考虑到应用可能还有其他手势操作,如滚动视图,需要确保这些手势与...

    IOS 自定义导航栏 和表格 学习笔记

    2. 在每个ViewController中重写`navigationBar:didPopItem:`方法,根据需要调整导航栏在切换时的状态。 3. 自定义UIBarButtonItem,通过设置图像或者使用自定义视图来实现独特的返回按钮或其他操作按钮。 其次,...

    导航栏平滑切换_导航栏随内容一块平滑切换

    在iOS开发中,导航栏(NavigationBar)是应用中常见的组件,用于展示页面间的层级关系和进行页面间的跳转。在创建具有平滑切换效果的NavigationController时,开发者常常需要自定义导航栏的行为和动画,以提供更加...

    自定义导航栏颜色

    如果你想对特定的ViewController修改导航栏颜色,可以在对应的ViewController类中添加以下代码: ```swift override func viewDidLoad() { super.viewDidLoad() navigationItem.title = "自定义导航栏" ...

    滑动逐渐隐藏导航栏的实现

    当用户在UIScrollView(如UITableView或UICollectionView)上滑动时,我们可以通过监听滑动手势的改变来调整导航栏的透明度或高度。这通常通过自定义UIScrollView的代理方法来完成。 以下是关键的实现步骤: 1. **...

    swift-一行代码设置状态栏样式和导航栏背景颜色

    例如,要将导航栏背景颜色设为蓝色,只需在你的`ViewController`中添加以下代码: ```swift self.navigationController?.navigationBar.barTintColor = UIColor.blue ``` 导航栏标题的设置,可以使用`...

    导航控制器presentViewController

    在导航控制器中使用`presentViewController`时,通常是为了展示非线性或者临时性的内容,例如设置界面、登录页面或者模态对话框。由于导航控制器本身已经有一个堆栈管理的视图控制器序列,`presentViewController`并...

    ios-自定义导航栏.zip

    - 在每个ViewController中,可能需要根据业务逻辑调整导航栏的显示,如隐藏、显示,或改变标题、颜色等。 - 使用Storyboard或代码创建导航控制器,然后将自定义导航栏设置为初始导航栏。 总之,“ios-自定义导航...

    Swift5.2 导航栏(带搜索框).zip

    为了在导航栏上添加搜索框,我们可以使用`UISearchController`。`UISearchController`不仅提供了搜索框,还包含了搜索结果的显示和管理。首先,创建一个`UISearchController`实例: ```swift let searchController ...

    swift版仿映客中间凸出tabBar,上下滑动时隐藏或显示导航栏及标签栏

    在iOS应用开发中,创建一个类似“映客”这样的视频直播平台界面,常常需要实现一些高级的UI交互效果,比如中间凸出的TabBar、在上下滑动时动态隐藏或显示导航栏及标签栏。本教程将重点讲解如何用Swift语言实现这个...

Global site tag (gtag.js) - Google Analytics