zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    游标cursor
    SQL: EXISTS
    LeetCode Reverse Integer
    LeetCode Same Tree
    LeetCode Maximum Depth of Binary Tree
    LeetCode 3Sum Closest
    LeetCode Linked List Cycle
    LeetCode Best Time to Buy and Sell Stock II
    LeetCode Balanced Binary Tree
    LeetCode Validate Binary Search Tree
  • 原文地址:https://www.cnblogs.com/wujy/p/4305755.html
Copyright © 2011-2022 走看看