ios 实现白天夜景切换的方案

编程入门 行业动态 更新时间:2024-10-10 12:24:57

ios 实现白天<a href=https://www.elefans.com/category/jswz/34/1761874.html style=夜景切换的方案"/>

ios 实现白天夜景切换的方案

项目中要做白天夜景切换的功能,写了个扩展方便用,记录一下。不太完善,主要是提供一种思路。。。,欢迎大牛指点一下。

先附一个链接 

效果图:

利用category封装 使用是这样的

实现思路:

1,色值变化,主要是view的backgroundcolor,label.texColor, button.titlecolor等等。。。

要是白夜切换肯定要像实现多语言一样 有个key 然后动态绑定到视图上

这里实现是通过一个枚举,这样写代码的时候比价方便

2 图片变换,包括imageView 还有button

key 的话 就是图片本身名字 ,要是夜景的话 图片名字后加_night 例如 mine_bg.png 夜景就是 mine_bg_night.png

然后写一个字符串的 扩展

 

第二步,Key 解决了以后 接下来就是绑定的问题

创建一个容器类 保存该对象的target 并为对象添加方法和参数, 参数是多参数的。

这里是添加方法参数的实现, 是保存到一个数组里面了, 因为有可能例如button 可能设置了背景色,和title 图片等,多个方法保存

 

这里是创建容器类的时候 添加通知。。。 并遍历存储的对象方法并执行。。 支持多参数

 

接下来是category 绑定的问题 使用runtime特性

基本就完事儿了

此处单例使用的比较安全的方式,哈哈哈,因为之前被人问住了,所以尽量标准化写。。。

只是添加了几个简单的功能,项目还在写,用到时候继续补充。。。

 

续:后来发现项目里使用的时候 定义枚举相当耗时耗力,并且名字不好区分,所以我又改良了一下

使用是这样子的

// z这里   self.view.dnBackGroundColor = ELMakeColorTuple(UIColorFromRGB(0xedeeef), UIColorFromRGB(0x3a3928));UIImageView * imageView = [[UIImageView alloc] init];imageView.imageKey = @"mine_bg";[imageView sizeToFit];[self.view addSubview:imageView];UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(imageView.frame), 200, 30)];label.font = [UIFont systemFontOfSize:15];label.text = @"这是一个 UILabel";
//这里label.dnTextColor = ELMakeColorTuple(UIColorFromRGB(0x222222), UIColorFromRGB(0xdcc787));[self.view addSubview:label];UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];// 这里button.dnBackGroundColor = ELMakeColorTuple(UIColorFromRGB(0x7c936e), UIColorFromRGB(0x4b4a38));[button setFrame:CGRectMake(CGRectGetWidth(self.view.frame)/2 - 30, CGRectGetHeight(self.view.frame) - 100, 60, 30)];[button setTitle:@"Change" forState:UIControlStateNormal];
//这里[button setDnTitleColor:ELMakeColorTuple([UIColor whiteColor], UIColorFromRGB(0xdcc787)) forState:UIControlStateNormal];button.titleLabel.font = [UIFont systemFontOfSize:15];[button addTarget:self action:@selector(dayNightChange:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:button];

使用的时候 dn是day-night的缩写,然后使用方法ELMakeColorTuple创建一个数组@[dayColor, nightColor];

typedef NSArray * ELColorTuple;
ELColorTuple ELMakeColorTuple(UIColor * dayColor, UIColor * nightColor);

需要改变夜景的时候 也无需使用我这单例了,直接调用

@interface ELDayNight : NSObject/**公共API 设置白天夜景@param night 是否是夜景*/
+ (void)setNight:(BOOL)night;

这个API可以直接调用,[ELDayNight setNight:YES/NO]; //这里没有本地化记录状态,因为我自己的项目里已经实现了。

更多推荐

ios 实现白天夜景切换的方案

本文发布于:2024-02-14 03:21:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761892.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:夜景   白天   方案   ios

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!