您的位置:首页 > 产品设计 > UI/UE

iPhone开发 – 小技巧二则 (UIColor 16进制颜色 | UIview设置frame)

2016-01-26 14:04 585 查看

引言

开发中总遇到各式各样的问题,解决方法也各有各的不同,可以说是条条大路通罗马吧,但是总有一条或几条是最优的。刚开始的时候我们可能只是为了完成去罗马的任务,但是罗马去多了以后,总会发现有些捷径可以走,既然有捷径,为何还要固执的走偏远的老路呢?可能觉得走老路不需要动脑,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];


是不是清爽了很多呢。

参考

http://stackoverflow.com/questions/1560081/how-can-i-create-a-uicolor-from-a-hex-string

http://stackoverflow.com/questions/24369139/is-there-a-simpler-method-to-set-height-of-uiview
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iphone开发