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.0green:((float)((colorLong & 0xFF00) >> 8))/255.0blue:((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]]直接定義顏色。