zoukankan      html  css  js  c++  java
  • 细节总结(一)

    self.XXX与_XXX的区别
    • 通过self.XXX得到的数据相当于调用get函数取值,等价于[self XXX];而通过_XXX获取的是自己的实例变量,直接对变量进行操作,并未调用get函数。所以,通过懒加载方式初始化的变量只能通过self.XXX调用,否则可能会存在未初始化的问题。
    • self.xxx是对属性的访问;而_xxx是对局部变量的访问。在使用self.xxx时是调用一个getter方法。会使引用计数加一,而_xxx不会使用引用技术加一的。
    • 所以,使用self.XXX是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下滑线的时候忽略了self这个指针,后者容易在block中造成循环引用。同时,使用 _XXX是获取不到父类的属性,因为它只是对局部变量的访问。
    颜色处理:
    • RGB:
      UI给的色彩无法直接获取的时候,可以通过mac自带的系统工具——数码测色计,获取对应的RGB颜色。
    [UIColor colorWithRed:242/255.0 green:242/255.0 blue:242/255.0 alpha:1 ];
    
    • 十六进制颜色:
      若颜色是写死的,可以在网上找一个十六进制和RGB颜色转换器把十六进制转换成RGB颜色;另外,可以写一个Category直接用十六进制字符串定义颜色:
      UIColor+Hex.h:
    #import <UIKit/UIKit.h>
    
    @interface UIColor (Hex)
    
    + (UIColor*)colorWithHex:(NSString *)hexString alpha:(CGFloat)alphaValue;
    
    + (UIColor*)colorWithHex:(NSString *)hexString;
    
    + (NSString *)hexFromUIColor: (UIColor*)color;
    
    @end
    

    UIColor+Hex.m:

    #import "UIColor+Hex.h"
    
    @implementation UIColor (Hex)
    
    + (UIColor*)colorWithHex:(NSString *)hexString alpha:(CGFloat)alphaValue
    {
        NSString *tmpHexString = [[hexString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
        if ([tmpHexString hasPrefix:@"#"]) {
            tmpHexString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@"0x"];
        }else if (![tmpHexString hasPrefix:@"0x"]){
            tmpHexString = [NSString stringWithFormat:@"0x%@", tmpHexString];
        }
        if (tmpHexString.length != 8) {
            return [UIColor clearColor];
        }
        
        long colorLong = strtoul([tmpHexString cStringUsingEncoding:NSUTF8StringEncoding], 0, 16);
        return [UIColor colorWithRed:((float)((colorLong & 0xFF0000) >> 16))/255.0
                               green:((float)((colorLong & 0xFF00) >> 8))/255.0
                                blue:((float)(colorLong & 0xFF))/255.0 alpha:alphaValue];
    }
    
    + (UIColor*)colorWithHex:(NSString *)hexString
    {
        return [UIColor colorWithHex:hexString alpha:1.0];
    }
    
    + (NSString *)hexFromUIColor: (UIColor*) color {
        if (CGColorGetNumberOfComponents(color.CGColor) < 4) {
            const CGFloat *components = CGColorGetComponents(color.CGColor);
            color = [UIColor colorWithRed:components[0]
                                    green:components[0]
                                     blue:components[0]
                                    alpha:components[1]];
        }
        
        if (CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) != kCGColorSpaceModelRGB) {
            return [NSString stringWithFormat:@"#FFFFFF"];
        }
        
        return [NSString stringWithFormat:@"#%X%X%X", (int)((CGColorGetComponents(color.CGColor))[0]*255.0),
                (int)((CGColorGetComponents(color.CGColor))[1]*255.0),
                (int)((CGColorGetComponents(color.CGColor))[2]*255.0)];
    }
    
    @end
    
    

    然后通过[UIColor colorWithHex:_sectionColorArray[section]]直接定义颜色。

  • 相关阅读:
    《.NET分布式应用程序开》读书笔记 第一章:理解分布式架构
    一个DataSet的工具类,可以将DataTime的Time部分去掉,主要在序列化Xml时有用.
    Microsoft SQL Server 2005技术内幕系列书籍
    COM+客户端部署发现
    PowerDesigner中三种模型的转换关系图
    将ASP.NET页面内容输出到字符串中
    在WinForms中隐藏Crystal Report的[MainReport]标签页
    qmake常用语法一
    MinGW简介
    Qt的prx文件
  • 原文地址:https://www.cnblogs.com/wust-zxl/p/6475932.html
Copyright © 2011-2022 走看看