`

UINavigationBar自定义背景

阅读更多
原帖地址 http://blog.csdn.net/wxg694175346/article/details/7757504

###############################################################
首先,为appDelegate增加一个navigationController属性:
@interface DymAppDelegate : UIResponder <UIApplicationDelegate>
	{
	    UINavigationController *navController_;
	}
	@property (strong, nonatomic) UIWindow *window;
	@property (strong, nonatomic) DymViewController *viewController;
	  
	@property (nonatomic, readonly, retain) UINavigationController *navigationController;
@end



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
	{
	    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
	      
	    self.viewController = [[[DymViewController alloc] initWithNibName:@"DymViewController" bundle:nil] autorelease];
	      
            //rootViewController设置为navigationController
	    self.window.rootViewController = self.navigationController;
	      
	    self.viewController = nil;
	      
	    [self.window makeKeyAndVisible];
	    return YES;
	}


- (UINavigationController*)navigationController {
	    if (navController_ == nil) {
	        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
	          
	        // Archive navigation controller for changing navigationbar class
	        [navController navigationBar];
	        NSMutableData *data = [[NSMutableData alloc] init];
	        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
	        [archiver encodeObject:navController forKey:kRootKey];
	        [archiver finishEncoding];
	        [archiver release];
	        [navController release];
	          
	        // Unarchive it with changing navigationbar class
	        NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
	        [unarchiver setClass:[CustomNaviBar class]
	                forClassName:NSStringFromClass([UINavigationBar class])];
	        navController_ = [[unarchiver decodeObjectForKey:kRootKey] retain];
	        [unarchiver release];
	          
	        [data release];
	    }
	    return navController_;
	}

利用NSKeyedArchiver和NSKeyedUnarchiver来修改navigationbar。。。
分享到:
评论

相关推荐

    自己写的一个NavgationBar与UIBarButtonIten更换自定义背景

    默认情况下,它有一个半透明的背景,但开发者可以根据需求为其设置自定义背景图片。这可以通过以下步骤实现: 1. 创建或选择一张适合用作`NavigationBar`背景的图片。确保图片尺寸符合`NavigationBar`的常规高度...

    自定义系统UINavigationBarController

    在实际开发中,为了方便复用这些自定义效果,建议将相关的配置封装到一个类别或扩展中,例如创建一个UINavigationBar+Customization.swift文件,将所有的自定义代码集中管理。这样可以提高代码的可维护性和可重用性...

    UINavigationBar的扩展使用案例

    首先,UINavigationBar的自定义背景是一个常见的需求。原生的UINavigationBar默认提供了几种样式,但往往不能满足所有设计需求。STNavigationBar允许开发者通过简单的代码或者 storyboard 设置自定义背景图片、颜色...

    ios-UINavigationBar.zip

    `UINavigationBar`通常出现在`UINavigationController`的顶部,显示标题、返回按钮和其他自定义视图。在这个名为“ios-UINavigationBar.zip”的压缩包中,包含了一个名为“DLNavigationBar-master”的项目,该项目由...

    自定义UINavigation

    1. **背景图**:默认情况下,UINavigationBar的背景是一个半透明的白色,但开发者可以根据需求设置自定义背景图片。这可以通过重写`- (void)drawRect:(CGRect)rect`方法或者使用`UINavigationBar Appearance Proxy`...

    swift-Tamamushi采用Swift编写的梯度UINavigationBar

    3. **自定义`UINavigationBar`的背景**:`Tamamushi`可能通过创建一个`UIView`或`CALayer`,并在其中绘制渐变色,然后将其设置为`UINavigationBar`的背景视图。这可以通过`UINavigationBar`的`setBackgroundImage(_:...

    ios-自定义NavigationBar.zip

    例如,我们可以创建一个名为`CustomNavigationBar`的新类,并实现一些自定义方法,如`drawRect:`用于自定义绘制背景,或者`layoutSubviews`来调整子视图的布局。 2. **自定义外观**:通过设置`barTintColor`、`...

    UINavigationBar的层次说明(附:简单实例源码)

    `UINavigationBar`通常包含一个标题,左侧和右侧的按钮,以及可能的自定义视图。这篇博客文章可能会深入探讨`UINavigationBar`的层次结构,并通过一个简单的实例源码来展示如何自定义和操作这个组件。 首先,`...

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

    例如,可以自定义导航栏的背景色、标题文字样式、左右按钮等。要实现自定义导航栏,你可以: 1. 使用`appearance`代理方法统一设置所有导航栏的样式。 2. 在每个ViewController中重写`navigationBar:didPopItem:`...

    ios自定义tabbar和navigationbar

    2. **自定义导航栏背景**: 通过UIAppearance设置UINavigationBar的barTintColor属性,或者创建一个自定义背景图片。 3. **自定义UIBarButtonItem**: 可以通过设置tintColor改变按钮的颜色,或者创建自定义的按钮图像...

    iOS自定义导航栏

    苹果的UIKit框架提供了内置的UINavigationBar,但有时为了实现独特的设计风格或增加更复杂的功能,开发者会选择自定义导航栏。本文将深入探讨如何在iOS中实现自定义导航栏,包括自定义NavigationBar的外观、行为以及...

    自定义导航栏,可以添加左中右barbutton

    总结起来,自定义导航栏包括了对UINavigationBar的外观定制,如背景色渐变,以及对UIBarButtonItem和UINavigationItem的使用,实现左右中三个区域的按钮布局。这个过程涉及到iOS UI设计原则,以及对Swift或Objective...

    HBDNavigationBar:自定义UINavigationBar,用于在各种状态之间进行平滑切换,包括条形,条形颜色,背景图像,背景Alpha,条形隐藏,标题文本属性,色泽颜色,阴影隐藏。

    UINavigationBar 是每一个 iOS 工程师都会遇到的坎,它令人抓狂的地方在于是否能随着页面切换而平滑地过渡到目的状态。想要把这件事情做好,不需要高深的算法,不需要深刻的底层原理,只需要一颗执着的内心。 介绍 ...

    swift-一个UINavigationBar分类可以动态改变导航栏的透明度以及大小

    在Swift编程中,我们经常需要自定义`UINavigationBar`以满足特定的设计需求。本篇文章将详细讲解如何通过创建一个`UINavigationBar`的分类来实现动态改变导航栏的透明度和大小,从而提升应用的视觉效果。 首先,...

    IOS应用源码之ios适用于iOS 5、iOS 6和iOS 7的自定义NavigationBar.zip

    开发者可以通过自定义`UINavigationBar`的外观,如背景颜色、标题样式、按钮图标等,来创建独特的界面风格。 - 在iOS 5、iOS 6和iOS 7中,系统默认的`UINavigationBar`样式有所差异,因此自定义代码需要考虑到这些...

    BusyNavigationBar, 用于显示加载效果的UINavigationBar扩展.zip

    BusyNavigationBar, 用于显示加载效果的UINavigationBar扩展 BusyNavigationBar 在导航背景上方显示加载效果的UINavigationBar扩展。屏幕截图条纹 条 你的自定义图层 用法BusyNavigationBar可以通过 Cocoa

    Narbar自定义

    7. **自定义背景和标题**:可以通过重写`UINavigationBar`的`drawRect:`方法来自定义背景颜色、渐变、图片等。同时,`UINavigationItem`的`title`和`titleView`属性可以用来改变标题的文本和显示方式。 8. **适配...

    自定义Navigation

    `CustomNavigationBar`这个文件名可能表示开发者已经创建了一个自定义的导航栏类,用于替代或扩展系统默认的`UINavigationBar`。这样的自定义通常包括以下几个方面: 1. **外观定制**:开发者可能通过重写`...

    swift_函数入门_自定义navigation样式

    Swift函数入门及自定义Navigation样式是Swift编程学习过程中的重要环节。Swift函数是代码的可重用块,允许我们组织和执行特定任务。对于初学者来说,理解并掌握函数的创建、参数、返回值和作用域是至关重要的。在本...

Global site tag (gtag.js) - Google Analytics