zoukankan      html  css  js  c++  java
  • iOS开发基础知识--碎片8

     

    iOS开发基础知识--碎片8 

    1:用UIImageView作为背景,但直接把按钮或者

    UITextField放在上面无法相应事件。

    解决办法:UIImageView默认的UserInteractionEnabled是NO,把它修改成YES,或者可以直接在XCODE上面的view有个属性勾选User Interaction Enabled
    
    遇到的场景(在滚动视图里面放一个图片视图,在图片视图上又放置一个按键,发现一直没有响应效果);

    2:AFnetWorking报"Request failed: unacceptable content-type: text/html"

    复制代码
    对应到自己的项目里面,我用的是AFNetworking这套网络请求包,需要改的是:
    
    AFURLResponseSerialization.m文件
    
    223行:
    
    self.acceptableContentTypes = [NSSetsetWithObjects:@"application/json", @"text/html",@"text/json",@"text/javascript", nil];
    
    加上@"text/html",部分,其实就是添加一种服务器返回的数据格式。
    复制代码

    3:NSMutableArray和NSArray的相互转换

    // NSArray --> NSMutableArray  
    NSMutableArray *myMutableArray = [myArray mutableCopy];  
    
    // NSMutableArray --> NSArray  
    NSArray *myArray = [myMutableArray copy];  

    4:自定义系统导航条上面的返回按钮,以及文字,右侧收藏按钮

    复制代码
     //中间标题
       UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
       navLabel.text = @"团购详情";
       navLabel.textColor = [UIColor whiteColor];
       navLabel.font = [UIFont systemFontOfSize:18];
       navLabel.textAlignment = NSTextAlignmentCenter;
       self.navigationItem.titleView = navLabel;
        
       //右边收藏按钮
       UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
       rightButton.frame = CGRectMake(0, 0, 20, 20);
       [rightButton setBackgroundImage:LOAD_IMAGE(@"meishoucang") forState:UIControlStateNormal];
       [rightButton addTarget:self action:@selector(doShouCang) forControlEvents:UIControlEventTouchUpInside];
       UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
       self.navigationItem.rightBarButtonItem = rightItem;
        
       //左边返回按钮
       UIButton *fanHuiButton = [UIButton buttonWithType:UIButtonTypeCustom];
       fanHuiButton.frame = CGRectMake(0, 0, 30, 40);
       [fanHuiButton setBackgroundImage:LOAD_IMAGE(@"fanhuijiantou") forState:UIControlStateNormal];
       [fanHuiButton addTarget:self action:@selector(doFanHui) forControlEvents:UIControlEventTouchUpInside];
       UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:fanHuiButton];
       self.navigationItem.leftBarButtonItem = leftItem;
    
    导航条上的title字体, 字号 可以这么定义,完全使用系统的 
    [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
           [UIColor colorWithRed:1.0/255 green:1.0/255 blue:1.0/255 alpha:1], UITextAttributeTextColor,[UIColor clearColor],UITextAttributeTextShadowColor,[UIFont systemFontOfSize:20],UITextAttributeFont,nil]];
    复制代码

    5:清理UITableView底部空的列

    self.tableView.tableFooterView = [[UIView alloc] init];

     6:如何隐藏navigation跳转后的头部右键

    //隐藏头部左边的返回
    self.navigationItem.hidesBackButton=YES;
    //隐藏头部右边
    self.navigationItem.rightBarButtonItem.customView.hidden=YES;

    7:如要给UICollectionViewController视图设置背景图

    UIImage *image=[UIImage imageNamed:@"AppBg"];
    self.collectionView.layer.contents=(id)image.CGImage;

    8:可以在其它地方修改rootViewController

    UIWindow *window = [UIApplication sharedApplication].keyWindow;
        window.rootViewController = [[HVWTabBarViewController alloc] init];

    9:新浪微博授权登录报Warning: Attempt to present on whose

    view is not in the window hierarchy!

    复制代码
     IntroductoryViewController *introductory=[mainStoryboard instantiateViewControllerWithIdentifier:@"introductoryview"];
            UINavigationController *rootNavigationController=[[UINavigationController alloc] initWithRootViewController:introductory];
                self.window.rootViewController=rootNavigationController;
    
    主要问题是a跳转到b,然后b放一个授权新浪微博的按键,增加一个UINavigationController,然后在a跳转到b时用nav跳转:
    
        UIStoryboard *mainStoryboard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
        LoginViewController* loginviewControll=[mainStoryboard instantiateViewControllerWithIdentifier:@"loginviewcontroller"];
        [self.navigationController pushViewController:loginviewControll  animated:YES];
    复制代码

    10:在引入第三方TcweiboSDK报linker command failed with exit

    code1(use -v to see invocation)

    是因为重复引入libTCWeiboSDK这个类库,TARGETS-PROJECT-Build Phases-Link Binary With Libraries中,有三个libTcweiboSDK,可以删除libTCWeiboSDK-I386.a

    11:NSUserDefaults存放民NSDictionary

    复制代码
    注意:NSUserDefaults支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型。
    本次遇到的问题:当NSDictionary里面的值为null时,要写入NSUserDefaults会报异常(attempt to insert non-property list object);
    解决方式:把字典中的值进行过滤处理,为空的转化成字符串的空值;代码如下(创建一个扩展类):
    
    @implementation NSDictionary(Common)
    -(NSDictionary *) changeDictionaryNotNill
    {
        NSMutableDictionary *muResult=[[NSMutableDictionary alloc]init];
        NSEnumerator *enumerator=[self keyEnumerator];
        id key;
        while ((key=[enumerator nextObject])) {
            id value=[self objectForKey:key];
            if ((NSNull *)value==[NSNull null]) {
                [muResult setObject:@"" forKey:key];
            }
            else
            {
                [muResult setObject:value forKey:key];
            }
        }
        return muResult;
    }
    @end
    复制代码
  • 相关阅读:
    Unity3D Resources TextAsset 正文
    使用位操作
    Chapter 3 Protecting the Data(3):创建和使用数据库角色
    找呀志_ContentResolver操作ContentProvider数据
    c#委托实例化和调用语句
    有意练习--Rails RESTful(一)
    对于晚辈:阅读经典“乱搭”形成了自己的“制”
    Eclipse SDK构建J2EE开发环境
    7.oracle学习门户系列七---网络管理和配置
    netback于kthread遇到cpu affinity问题
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5790526.html
Copyright © 2011-2022 走看看