引言
开发中总遇到各式各样的问题,解决方法也各有各的不同,可以说是条条大路通罗马吧,但是总有一条或几条是最优的。刚开始的时候我们可能只是为了完成去罗马的任务,但是罗马去多了以后,总会发现有些捷径可以走,既然有捷径,为何还要固执的走偏远的老路呢?可能觉得走老路不需要动脑,Ctrl + c 和 Ctrl + v就可以了,但是这样做是不是觉得有些笨重呢,我本懒人,懒人总得想些办法,达到用最少的代价做同样的事的目的。
下面总结了一些小技巧,暂时记录下,未完待续。
1. UIColor 生成问题
简单的UIColor生成,大家都会,下面假设UI设计给了一个颜色,rgb值分别为 212, 207, 232,可以用如下代码实现
UIColor *color = [UIColor colorWithRed:212.0/255.0 green:207.0/255.0 blue:232.0/255.0 alpha:1];
这个代码写多了,有些人就会发现,其实255.0是重复的,每次都得重复写,是不是浪费手力?如何破呢?
#define UIColorFromRGB(R, G, B, A) [UIColor colorWithRed:((R) / 255.0f) green:((G) / 255.0f) blue:((B) / 255.0f) alpha:A]
上面的颜色值就可以用新定义的宏来表示
UIColorFromRGB(212,207,232,1)
是不是简单些了呢。
如果UI设计给的颜色值是16进制的样式,例如是 0xD4CFE8。你可以说没关系啊,我转成10进制之后用上述宏就可以了。是啊,这可以达到想要的效果,但是想想是不是有些繁琐呢,那如何破呢?
写个宏,把16进制转成10进制就可以了嘛。
#define UIColorFromHEXRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
使用方法
UIColorFromHEXRGB(0xD4CFE8)
这样是不是简单些了呢。
2. UIView单独设置width、height、positionX、positionY
如果需要单独设置一个view的某个frame属性,如何做,最直接的方法是 view.frame = CGRectMake(positionX,positionY,width, height)。可是我只需要设置一个属性啊,不需要全部设置一遍啊。so,怎么破,Make a Category on UIVIew(设置一个UIView的类别)
@interface UIView (Customize)
- (void)setX:(CGFloat)x;
- (void)setY:(CGFloat)y;
- (void)setWidth:(CGFloat)width;
- (void)setHeight:(CGFloat)height;
@end
@implementation
- (void)setX:(CGFloat)x
{
CGRect frame = self.frame;
frame.origin.x = x;
self.frame = frame;
}
- (void)setY:(CGFloat)y
{
CGRect frame = self.frame;
frame.origin.y = y;
self.frame = frame;
}
- (void)setWidth:(CGFloat)width
{
CGRect frame = self.frame;
frame.size.width = width;
self.frame = frame;
}
- (void)setHeight:(CGFloat)height
{
CGRect frame = self.frame;
frame.size.height = height;
self.frame = frame;
}
@end
使用方法:在需要设置的页面导入该类目(#import “UIView+Customize.h”),之后调用
[view setHeight:60];
是不是清爽了很多呢。
参考