zoukankan      html  css  js  c++  java
  • IOS UI 第五篇:基本UI

    添加个导航栏:

     
     
        Xib1 *xib1 = [[Xib1 allocinitWithNibName:@"Xib1" bundle:nil];
        
    UINavigationController *navController = [[UINavigationController allocinitWithRootViewController:xib1];
        
        
        
    self.window.rootViewController = navController;
     
    xib1:
    - (IBAction)nextPage:(id)sender {
        
    self.title = @"";
        
    Xib2 *xib2= [[Xib2 allocinitWithNibName:@"Xib2" bundle:nil];
        
        xib2.
    modalPresentationStyle = UIModalPresentationCustom;
        [
    self.navigationController pushViewController:xib2 animated:YES];
    }

     
    xib2:
    - (IBAction)BackfirstPage:(id)sender {
        
    Xib3 *xib3 = [[Xib3 allocinitWithNibName:@"Xib3" bundle:nil];
        
    UIViewController *popVC = self.navigationController.viewControllers[0];
        [
    self.navigationController pushViewController:xib3 animated:YES];
        popVC.
    title = @"First Page";
    }

     
     
     
    xib3:
    - (IBAction)BackRoot:(id)sender {
        
    UIViewController *popVC = self.navigationController.viewControllers[0];
        [
    self.navigationController popToViewController:popVC animated:YES];
        popVC.
    title = @"First Page";
        
    }
    - (
    IBAction)Back:(id)sender {
        
    UIViewController *popVC = self.navigationController.viewControllers[1];
        [
    self.navigationController popViewControllerAnimated:YES];
         popVC.
    title = @"Second Page";
    }

     
     
    适配导航栏:
     
    第一步:
    Supporting Files -> Shipaei67-Info.plist -> View controller-based status bar (拉动第一个栏找这个选项) Value : NO
    第二步:
    项目->Deployment Info -> Status Bar Style : Black Translucent
    做完前两步,导航条上面的字体就有白色变成黑色了
    电池栏距离:0-20
    导航栏距离:0-44
     
    定义IOS 版本:
     
    #define ISiOS7 ([UIDevice currentDevice].systemVersion.floatValue>=7.0)
     
     
    关于导航栏的方法:
     
    - (void)viewDidLoad
    {
        [
    super viewDidLoad];
        
    //判断是否是iOS7
        
    if (ISiOS7) {
            
    //IOS7里,这个是设置导航条文字的颜色
            
    self.navigationController.navigationBar.tintColor=[UIColor redColor];
            
    //IOS7里,这个是设置导航条背景的颜色
            
    self.navigationController.navigationBar.barTintColor=[UIColor blueColor];

        }
    else{
            
    //不是ios7,只能设置导航条的颜色
            
    self.navigationController.navigationBar.tintColor=[UIColor orangeColor];
        }
        
    //自定义标题
        
    UILabel *titleLable=[[UILabel alloc]initWithFrame:CGRectMake(0010044)];
        
    //ios6里,label默认背景是白色,但是ios7默认透明
        
    if (!ISiOS7) {
            titleLable.
    backgroundColor=[UIColor clearColor];
        }
        titleLable.
    text=self.title;
        titleLable.
    font=[UIFont boldSystemFontOfSize:20];
        titleLable.
    textColor=[UIColor whiteColor];
        
    self.navigationItem.titleView=titleLable;
        
        
        
    //自定义导航条按键(利用系统自带的样式)
        
    UIBarButtonItem *barButtonItem1=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(onBarButtonItemClicked:)];
        
    UIBarButtonItem *barButtonItem2=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(onBarButtonItemClicked:)];
        
    //    self.navigationItem.rightBarButtonItem=barButtonItem;//单独一个按键
        
    self.navigationItem.rightBarButtonItems=@[barButtonItem1,barButtonItem2];
        
        
        
    //自定义导航条按键,完全自定义
        
    UIButton *leftBarButton=[UIButton buttonWithType:UIButtonTypeCustom];
        [leftBarButton 
    setTitle:@"左侧按键" forState:UIControlStateNormal];
        [leftBarButton 
    setTitle:@"左侧点击" forState:UIControlStateHighlighted];
        [leftBarButton 
    setTitleColor:[UIColor whiteColorforState:UIControlStateNormal];
        [leftBarButton 
    setTitleColor:[UIColor redColorforState:UIControlStateHighlighted];
        leftBarButton.
    frame=CGRectMake(0010044);
        [leftBarButton 
    addTarget:self action:@selector(onLeftBarButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
        
    //将上面自定义的按键,包装成一个导航条按键
        
    UIBarButtonItem *leftBarButtonItem=[[UIBarButtonItem alloc]initWithCustomView:leftBarButton];
        
    self.navigationItem.leftBarButtonItem=leftBarButtonItem;
        
        
        
        
    //设置导航条背景
        [
    self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbg"forBarMetrics:UIBarMetricsDefault];
        
    }
    -(
    void)onLeftBarButtonClicked:(id)sender{
        
    NSLog(@"自定义导航条按键被点击");
    }
    -(
    void)onBarButtonItemClicked:(id)sender{
        
    NSLog(@"导航条按键被点击");
    }
     
     
    通知栏:
     
    main:
     
    @implementation QFAppDelegate{
        
    Dog *dog;
        
    Person *person;
    }

    - (
    BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        
    self.window = [[UIWindow allocinitWithFrame:[[UIScreen mainScreenbounds]];
        
        
    dog=[[Dog alloc]init];
        
    person=[[Person alloc]init];
        
    //让人接收通知,把人注册到通知中心中
        [[
    NSNotificationCenter defaultCenter]addObserver:person selector:@selector(beatThief:) name:@"狗叫:bark!!!" object:Nil];
        
        
    UIButton *button=[UIButton buttonWithType:UIButtonTypeContactAdd];
        button.
    frame=CGRectMake(1001005050);
        [button 
    addTarget:self action:@selector(makeDogBark:) forControlEvents:UIControlEventTouchUpInside];
        [
    self.window addSubview:button];
     
    -(void)makeDogBark:(id)sender{
        [
    dog findThief];
    }
     
     
    Dog.h
     
    #import "Dog.h"

    @implementation Dog
    -(
    void)findThief{
        
    NSString *model=@"测试的数据模型";
        
    //利用通知中心发通知
        [[
    NSNotificationCenter defaultCenter]postNotificationName:@"狗叫:bark!!!" object:model];
    }
    @end
     
    Person.m
     
    @implementation Person
    -(
    void)beatThief:(id)sender{
    //    NSLog(@"%@",sender);
        
    NSLog(@"抄家伙,打贼!");
        
    NSNotification *notice=sender;
        
    NSString *testModel=notice.object;
        
    NSLog(@"测试数据的传递:%@",testModel);
    }
    @end
     
     
    系统通知:
     
    @implementation QFRegistViewController{
        
    CGRect buttonOldRect;
        
    UITapGestureRecognizer *tapGR;//添加单击手势
    }

    - (
    id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
        
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        
    if (self) {
            
    // Custom initialization
        }
        
    return self;
    }
    - (
    void)viewDidLoad{
        [
    super viewDidLoad];
        
        
    /*
         
    数据传递
         1
    、首先,数据已经存在了!
         2
    、谁需要,就声明几个指针。
         3
    、在实例化2那个对象的时候,将声明的几个指针指向正确是数据。
         4
    、至此,数据传递完成,可以使用了。
         
         */

        
        
    //将自己加入通知中心
        [[
    NSNotificationCenter defaultCenter]addObserver:self selector:@selector(onKeyBoradShow:) name:UIKeyboardWillShowNotification object:Nil];
        [[
    NSNotificationCenter defaultCenter]addObserver:self selector:@selector(onKeyBoradHide:) name:UIKeyboardWillHideNotification object:Nil];
        
    buttonOldRect=self.goDetailButton.frame;
        
        
    //实例化单击手势
        
    tapGR=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(onTap:)];
        
    }
    //单击手势的响应函数
    -(
    void)onTap:(id)sender{
        
    //将输入框取消第一响应者,键盘就睡自动收回
        [
    self.nameTextField resignFirstResponder];
        [
    self.passwordTextField resignFirstResponder];
    }
    //收到键盘将要弹起的通知后,调用的函数
    -(
    void)onKeyBoradShow:(id)sender{
        [
    self.view addGestureRecognizer:tapGR];
        
    NSLog(@"%@",sender);
        
    //sender转化成notice类型
        
    NSNotification *notice=sender;
        
    //获取通知里面的userinfo
        
    NSDictionary *userInfo = notice.userInfo;
        
    //userinfo中获取键盘最后的状态rect
        
    id keyBoardRectNotice = userInfo[UIKeyboardFrameEndUserInfoKey];
        
    //将上面获得的rect对象,提取出cgrect
        
    CGRect keyBoardRect;
        [keyBoardRectNotice 
    getValue:&keyBoardRect];
        
    //用获得的cgrect来设置buttonframe
        
    CGRect buttonNewFrame=buttonOldRect;
        
    //原来的按键frame减去键盘的高度,生成新的frame
        buttonNewFrame.
    origin.y-=keyBoardRect.size.height;
        [
    UIView animateWithDuration:0.2 animations:^{
            
    self.goDetailButton.frame=buttonNewFrame;
        }];
        
        
    }
    //收到键盘将要收回的通知后,调用的函数
    -(
    void)onKeyBoradHide:(id)sender{
        [
    self.view removeGestureRecognizer:tapGR];
        [
    UIView animateWithDuration:0.3 animations:^{
            
    self.goDetailButton.frame=buttonOldRect;
        }];
    }
    //按键函数
    - (
    IBAction)goDetail:(id)sender {
        
    NSString *name=self.nameTextField.text;
        
    NSString *password=self.passwordTextField.text;
        
        
    //生成数据模型
        
    QFUserModel *model=[[QFUserModel alloc]init];
        model.
    name=name;
        model.
    pass=password;
        
        
    QFDetailViewController *detailVC=[[QFDetailViewController alloc]initWithNibName:@"QFDetailViewController" bundle:Nil];
        
    //将数据模型传入
        detailVC.
    model=model;
        
        [
    self presentViewController:detailVC animated:YES completion:^{
            
        }];
        
    }

    //销毁函数,用于移除通知
    -(
    void)dealloc{
        
    //在销毁的时候将自己在通知中心中移除
        [[
    NSNotificationCenter defaultCenter]removeObserver:self];
    }
    @end
     
     
     
     
     
     
     
     
  • 相关阅读:
    CentOS yum 源的配置与使用
    在css当中使用opacity
    CSS position属性absolute relative等五个值的解释
    uni APP 微信小程序获取授权的微信信息
    vue-admin-element 打包发布后IE报错的问题
    RMAN恢复数据文件
    怎么删除表空间对应的某一个数据文件
    Oracle存储过程、函数、包加密wrap
    Oracle加密解密
    Interval 用法总结
  • 原文地址:https://www.cnblogs.com/firstrate/p/3662122.html
Copyright © 2011-2022 走看看