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

引言

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

是不是清爽了很多呢。

参考

  1. http://stackoverflow.com/questions/1560081/how-can-i-create-a-uicolor-from-a-hex-string
  2. http://stackoverflow.com/questions/24369139/is-there-a-simpler-method-to-set-height-of-uiview
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值