久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

iOS viewController添加導(dǎo)航條添加跳轉(zhuǎn)以及特效

 玄冰優(yōu) 2015-01-14
一直隨著應(yīng)用環(huán)境的變化在更新UINavigationController的使用!學(xué)無止境,。

給單獨的viewcontroller或者在Appdelegate的主頁面添加導(dǎo)航條,只要在viewcontroller上添加navigationcontroller,在添加此navigationcontroller即可


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

    

    ViewController *mainView = [[ViewController alloc]init];

    UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:mainView];

    navi.navigationBar.backgroundColor = [UIColor blueColor];

    [self.window setRootViewController:navi];

    [self.window makeKeyAndVisible];

    return YES;

}


導(dǎo)航條的字體和顏色的設(shè)置

self.navigationController.navigationBar.titleTextAttributes =  [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]; // --- 字體顏色

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"BJ.png"] forBarMetrics:UIBarMetricsDefault]; // — 背景色


導(dǎo)航條跳轉(zhuǎn)頁面的考慮
對于用navigationcontroller來跳轉(zhuǎn)頁面的時候,,其實是執(zhí)行堆棧的進棧和出棧的操作,,要想釋放內(nèi)存,那么在來回跳轉(zhuǎn)的時候,,就要考慮幾個問題了

1 A =>B=>C=>D,
D=>A 有根視圖的話 (HOME)
[self.navigationController popToRootViewControllerAnimated:YES]; 
D=>C  (每一個界面返回上一層)
[self.navigationController popViewControllerAnimated:YES]; 
返回到上一層,,并且傳遞參數(shù)
//此頁面已經(jīng)存在于self.navigationController.viewControllers中,并且是當前頁面的前一頁面  

CViewController *cvc = [self.navigationController.viewControllers
objectAtIndex:self.navigationController.viewControllers.count-
2];

CViewController *cvc = [CViewController alloc]init];
cvc.str = self.str;

[self.navigationController popToViewController:cvc animated:true];
返回到上一層后,上一頁面顯示后要接收參數(shù),,并刷新,。注意此時應(yīng)該在viewDidAppear中進行判斷并接收傳遞的值
-(void)viewDidAppear:(BOOL)animated
{
  //判斷并接收返回的參數(shù)
}

 A =>B=>C=>D=>E,E=>B=>C=>E
因為B在之前已經(jīng)出現(xiàn)過,不能在E中直接PUSH到B,,因為那樣已經(jīng)是兩個B了,,增加內(nèi)存,,所以在跳轉(zhuǎn)的時候,就要進行判斷是否之前已經(jīng)出現(xiàn)過B了,,出現(xiàn)過,,則直接push。這樣push到的是原有的B,,不會在內(nèi)存中重新生成一個B了,。

 NSArray *array = self.navigationController.viewControllers;

    for (UIViewController *vc in array) {


        if ([vc isKindOfClass:[BXXXViewController class]]) {

push VC;

}

或者知道每個界面的指針



[self.navigationController

popToViewController: [self.navigationController.viewControllers

         objectAtIndex: ([self.navigationController.viewControllers count] -4)]

                animated:YES];



在使用時,,根據(jù)自己返回層的需要,,只要改變一下“-4”這個數(shù)字就可以達到目的了


//=====2016年3月17日 增加導(dǎo)航條的變化 Xcode7.2


很多的應(yīng)用現(xiàn)在都做到了,隨著頁面的滑動導(dǎo)航條的顏色也會發(fā)生變化,,現(xiàn)在使用原生的導(dǎo)航條來體現(xiàn)一下基本原理,。。,。


*在項目屬性里設(shè)置 


View controller-based status bar appearance == NO 默認是YES


才可以改變導(dǎo)航條上20像素位置的狀態(tài)欄顏色


干貨:

本例使用的 UITableView 添加KVO實現(xiàn)監(jiān)控滑動位置的變化


[_myTable addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionInitial context:nil];


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"contentOffset"]) {
        [self navChange];
    }
}


-(void)navChange
{
    if (_myTable.contentOffset.y <= 64) {
        self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor blueColor] forKey:NSForegroundColorAttributeName];
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"BJ1.png"] forBarMetrics:UIBarMetricsDefault];
        self.title = @"初始導(dǎo)航條";
    }
    else if (_myTable.contentOffset.y >= 192 )
    {
        self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"BJ2.png"] forBarMetrics:UIBarMetricsDefault];
        self.title = @"導(dǎo)航條最終狀態(tài)";
        // 狀態(tài)欄顏色為白色
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
       
       
    }else
    {
        self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor redColor] forKey:NSForegroundColorAttributeName];
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"BJ3.png"] forBarMetrics:UIBarMetricsDefault];
        self.title = @"導(dǎo)航條中間狀態(tài)";
        // 狀態(tài)欄顏色為白色
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
    }
}


上效果圖 無圖無真相

 



 

demo地址:https://github.com/Lian1990/NavColorRamp





    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多