iOS 小结

作者: 邹邹_ZZ | 来源:发表于2016-07-04 16:29 被阅读928次

    iOS小结

    • 1、相应点击指定view区域
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        NSSet *allTouches = [event allTouches];    //返回与当前接收者有关的所有的触摸对象
        UITouch *touch = [allTouches anyObject];   //视图中的所有对象
        CGPoint point = [touch locationInView:self.view]; //返回触摸点在视图中的当前坐标
        int x = point.x;
        int y = point.y;
        NSLog(@"touch (x, y) is (%d, %d)", x, y);
    }
    
    • 2、修改UITextField的默认颜色文字大小
    修改默认颜色
        self.textField.placeholder = placeholder;
        [self.textField setValue:[UIColor colorwithHexString:@"cccccc"] forKeyPath:@"_placeholderLabel.textColor"];
        [self.textField setValue:[UIFont boldSystemFontOfSize:14] forKeyPath:@"_placeholderLabel.font"];
    
    • 3、去掉字符串的空格
     NSString *str = @" sdsdijls  ijdlsj sdffsd;kl  fs;dkf;s";
        
     //去掉开头和结尾的空格
     NSString *str1 = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        
     //替换的方法 。去掉所有空格
     NSString *str2 = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
        
     str1 = @"sdsdijls  ijdlsj sdffsd;kl  fs;dkf;s";
     str2 = @"sdsdijlsijdlsjsdffsd;klfs;dkf;s";
    
    • 4、修改UITextField文字贴在边框的
    
    // 默认情况下,当向textField输入文字时,文字会紧贴在textField左边框上.我们可以通过设置textField的leftView,设置一个只有宽度的leftView.这样还不够,因为默认leftView是不显示的.还需要将leftViewMode设置为UITextFieldViewModeAlways.这样就完成了.
    
    
        //设置文本框左边的view
        UITextField *textField = [[UITextField alloc]init];
        textField.frame = CGRectMake(10, 30, 300, 30);
        [self.view addSubview:textField];
        textField.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 8, 0)];
        //设置显示模式为永远显示(默认不显示)
        textField.leftViewMode = UITextFieldViewModeAlways;
    
    • 5、取数组中n个元素
    取数组中n个元素
    
    NSArray *array = @[@"品牌",@"颜色",@"上牌时间",@"行驶里程",@"描述"];
    NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
    NSLog(@"array1==%@",array1);
    
    • 6、在UITableView上添加tap手势可用的方法:
      UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapCounts)];
      tap.cancelsTouchesInView = false;
      [tableView addGestureRecognizer:tap];
    
    • 7、UITableviewCell上的控件在点击cell时候背景颜色消失的解决方案:
    lable.layer.backgroundColor=[UIColor redColor].CGColor;
    
    • 8、打包上传app时候报错和对应的解决方法
    1、ERROR ITMS-90049: “This bundle is invalid. The bundle identifier contains disallowed characters. [See the section of the Application Programming Guide entitled The Application Bundle.]” 
    解决方案:找到第三方库中得info.plist文件添加bundle id ,修改bundle version ,bundle version string 
    具体解决步骤:在xcode左下角搜索框搜索info.plist,搜索出所有info.plist文件对这三个key缺少的添加,不对的修改 
    2、 
    ERROR ITMS-90530: “Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in ‘dqcclient.app’ is ‘7.0’.” 
    解决方案:编译时拔掉真机,否者编译会针对真机的系统架构进行编译 
    3、 
    ERROR ITMS-90535: “Unexpected CFBundleExecutable Key. The bundle at ‘dqcclient.app/TencentOpenApi_IOS_Bundle.bundle’ does not contain a bundle executable. If this bundle intentionally does not contain an executable, consider removing the CFBundleExecutable key from its Info.plist and using a CFBundlePackageType of BNDL. If this bundle is part of a third-party framework, consider contacting the developer of the framework for an update to address this issue.” 
    解决方案:在xcode左下角搜索框搜索info.plist,搜索出所有info.plist文件,删除掉第三方info.plist文件中的Executable file 字段 
    4、 
    ERROR ITMS-90529: “Invalid package. Applications built with sdk 9.0 or later must be packaged as proper IPA files.” 
    解决方案:现在上传需是IPA文件 
    具体解决步骤:将xcode编译的.app文件放入Payload文件夹内,压缩成.zip文件,修改其后缀为.ipa文件,即可。 
    
    • 9、UITableViewCell 上的imageView 用SDWebimage 加载图片时候 出现内存暴涨的现象:
    1.同时加载图片过多;
    2.加载的图片过大;
    
    • 10、添加延时方法 和取消延时的方法
    [self performSelector:@selector(hidden) withObject:self afterDelay:3];
    
     [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hidden) object:nil];//取消对应的方法
        
     [NSObject cancelPreviousPerformRequestsWithTarget:self];//取消全部。
     [[self class] cancelPreviousPerformRequestsWithTarget:self];//取消全部。
    
    
    • 11、判断数组中存在某个元素
    NSArray *array = @[@"品牌",@"颜色",@"上牌时间",@"行驶里程",@"描述"];
    //判断数组中存在某个元素
    if ([array indexOfObject:@"品牌"]!= NSNotFound) {
            NSLog(@"存在");
        }
    
    • 12、xib上拖ScrollView 添加约束后再加label、button等导致scrollView无法滑动
    -(void)viewDidAppear:(BOOL)animated{
        [super viewDidAppear:animated];
        self.scrollView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight);
        [self.scrollView setContentSize:CGSizeMake(kScreenWidth, 1000)];
    }
    
    
    • 13、数学公式
    NSLog(@"%i",abs(-3));
        
        NSLog(@"%d",abs(-4));
        
        //floor() 向下取整
        NSLog(@"%f",floorf(-3.1415926));
        NSLog(@"%d",(int)floorf(-3.1415926));
        
        // ceil()向上取整
        NSLog(@"%f",ceilf(3.14));
        NSLog(@"%d",(int)ceilf(3.14));
        
        //round() 四舍五入
        NSLog(@"round()%f",roundf(3.14));
        NSLog(@"round()%d",(int)roundf(3.14));
        NSLog(@"round()%f",roundf(3.74));
        
        //fmax()求两个数的最大值
        NSLog(@"fmax()%f",fmaxf(3.14, 2.71));
        NSLog(@"fmax()%d",(int)fmaxf(3.14, 2.71));
        
        //-------------------  可以嵌套
        NSLog(@"fmax()%f",fmaxf(20.69, fmaxf(3.14, 19.87)));
        
        //fmin()求两个数的最小值
        NSLog(@"fmin%f",fmin(14, 12));
        NSLog(@"fminf()%d",(int)fminf(3.14, 3.141));
        
        //fmod()求两个数整除后的余数
        NSLog(@"fmodf%f",fmodf(5.00, 3.00));
        
        //modf()/modff()/modfl() 浮点数分解为整数和小数
        float a;
        float c;
        float b = 8.22;
        a = modff(b, &c);
        NSLog(@"modf()-整数部分-%f",c);
        NSLog(@"modf()-小数部分-%f",a);
    
    

    打印结果:

    打印结果:
    2015-08-13 14:09:55.520 Micro Shop[15342:164204] 3
    2015-08-13 14:09:55.564 Micro Shop[15342:164204] 4
    2015-08-13 14:09:55.565 Micro Shop[15342:164204] -4.000000
    2015-08-13 14:09:55.565 Micro Shop[15342:164204] -4
    2015-08-13 14:09:55.565 Micro Shop[15342:164204] 4.000000
    2015-08-13 14:09:55.565 Micro Shop[15342:164204] 4
    2015-08-13 14:09:55.565 Micro Shop[15342:164204] round()3.000000
    2015-08-13 14:09:55.565 Micro Shop[15342:164204] round()3
    2015-08-13 14:09:55.565 Micro Shop[15342:164204] round()4.000000
    2015-08-13 14:09:55.566 Micro Shop[15342:164204] fmax()3.140000
    2015-08-13 14:09:55.566 Micro Shop[15342:164204] fmax()3
    2015-08-13 14:09:55.566 Micro Shop[15342:164204] fmax()20.690001
    2015-08-13 14:09:55.566 Micro Shop[15342:164204] fmin12.000000
    2015-08-13 14:09:55.566 Micro Shop[15342:164204] fminf()3
    2015-08-13 14:09:55.566 Micro Shop[15342:164204] fmodf2.000000
    2015-08-13 14:09:55.566 Micro Shop[15342:164204] modf()-整数部分-8.000000
    2015-08-13 14:09:55.567 Micro Shop[15342:164204] modf()-小数部分-0.220000
    
    • 14、label增加留白(重写 - (CGSize)intrinsicContentSize)
    
    - (CGSize)intrinsicContentSize {
    CGSize originalSize = [super intrinsicContentSize];CGSize size = CGSizeMake(originalSize.width+20, originalSiz
    e.height+20);return size;
    }
    

    如果是用代码约束,如果你只想设置坐标不想设置大小,那么你需要像上面的代码一样,在- (CGSize)intrinsicContentSize为你的label指定一个默认大小
    如果是在Xib里,那么你需要在下面这个Instrinsic Size的属性里设置为placeholder,这样,Xcode就不会报错了

    相关文章

      网友评论

        本文标题:iOS 小结

        本文链接:https://www.haomeiwen.com/subject/raacjttx.html