计划着以后每周一次博客记录
每个技术点一篇,每篇持续更新。。。。。。
Storyboard Xib 中打全局断点,如果崩溃或产生异常发生在主函数时80%的可能性是Storyboard Xib脱线没有及时清理掉坏线。eg,某个控件的点击事件或者属性已经被删除但连线还在。。。。。。
20160906
当一个APP其中一个界面需要导航栏(导航栏不隐藏)推入下一个界面又不需要导航栏(导航栏隐藏)再推入下一个界面有需要导航栏(导航栏不隐藏)的时候我们可以用下面的代码:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[self.navigationController setNavigationBarHidden:YES animated:NO];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
20160906
之前有人就和我说要做的专业些,在项目开发中我的方法,参数等命名不是很规范,前几天小师父又一次提出来,我也觉得有必要注意一下,这话说出来让我想起我每次配合UI调完界面UI都是我情绪低落的开始。我可能更在意需求的实现,但是用户第一时间在意的是界面吖,就像我们的代码,先不说逻辑,编写规范些毕竟给人的第一印象不错。所以早上花了一些时间了解了一下相关资料。听人劝还是能吃饱饭的~
20160909
UI提出更改登录注册修改密码这个界面 其中placeholder 的字体颜色变成了自定义 解决办法有很多 因为我是在xib下设置 解决办法如下
点击加号 加入一个字段“self._placeholderLabel.textColor” Type 设置成“Color” 之后就可以正常设定自己自定义的颜色了!
代码呢 方法如下
setAttributedPlaceholder
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSForegroundColorAttributeName] = [UIColor redColor];
NSAttributedString *attribute = [[NSAttributedString alloc] initWithString:self.placeholder attributes:dict];
[self setAttributedPlaceholder:attribute];
下面用四种方法,动态的设置placeholderLabel
的颜色
方法一:addTarget
// 为了书写方便,便于管理,定义一个不可变的全局变量;
static NSString * const DXPlaceholderColorKey = @"placeholderLabel.textColor";
- (void)awakeFromNib
{
[self addTarget:self action:@selector(editingDidBegin) forControlEvents:UIControlEventEditingDidBegin];
[self addTarget:self action:@selector(editingDidEnd) forControlEvents:UIControlEventEditingDidEnd];
}
- (void)editingDidBegin
{
[self setValue:[UIColor whiteColor] forKeyPath:DXPlaceholderColorKey];
}
- (void)editingDidEnd
{
[self setValue:[UIColor grayColor] forKeyPath:DXPlaceholderColorKey];
}
方法二:代理-->遵守协议,自己做自己的代理
- (void)awakeFromNib
{
self.delegate = self;
}
#pragma mark -------- <UITextFieldDelegate>---------
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self setValue:[UIColor whiteColor] forKeyPath:DXPlaceholderColorKey];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self setValue:[UIColor grayColor] forKeyPath:DXPlaceholderColorKey];
}
方法三:通知
- (void)awakeFromNib
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editingDidBegin) name:UITextFieldTextDidBeginEditingNotification object:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editingDidEnd) name:UITextFieldTextDidEndEditingNotification object:self];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)editingDidBegin
{
[self setValue:[UIColor whiteColor] forKeyPath:DXPlaceholderColorKey];
}
- (void)editingDidEnd
{
[self setValue:[UIColor grayColor] forKeyPath:DXPlaceholderColorKey];
}
方法四:重写文本框特有的方法
- (void)awakeFromNib
{
[self setValue:[UIColor grayColor] forKeyPath:DXPlaceholderColorKey];
}
- (BOOL)becomeFirstResponder
{
[self setValue:[UIColor whiteColor] forKeyPath:DXPlaceholderColorKey];
return [super becomeFirstResponder];
}
- (BOOL)resignFirstResponder
{
[self setValue:[UIColor grayColor] forKeyPath:DXPlaceholderColorKey];
return [super resignFirstResponder];
}
原文链接:http://www.jianshu.com/p/e5c6c9b455dd
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
20160912
大周一~满血复发 即使周末过得很累 累是因为事情多 但是心情好
数组去重的几种方法
1,数组containsObject去重(结果有序)
//将数字的重复的对象去除,只保留一个
-(NSArray *)arrayWithMemberIsOnly:(NSArray *)array
{
NSMutableArray *categoryArray = [[NSMutableArray alloc]init];
for(unsigned i = 0;i<[array count];i++)
{
if([categoryArray containsObject:[array objectAtIndex:i]] == NO)
{
[categoryArray addObject:[array objectAtIndex:i]];
}
}
}
return categoryArray;
}
2,使用kvo去重
可以使用KVO来选择一个集合中元素对应的属性。同时,KVO还有多种集合操作符可以实现对集合数据的快速分析,如下代码:
NSArray *array = @[@”mgen”, @”tom”, @”martin”];
//选择所有字符串的length为新的数组
NSLog(@”%@”, [array valueForKeyPath:@”length”]);
//选择最大长度
NSLog(@”%@”, [array valueForKeyPath:@”@max.length”]);
输出:
(
4,
3,
6
)
6
还可以使用distinctUnionOfObjects操作符去取集合的不重复子集,这些操作符可以嵌套调用,比如,取一个数据的不重复子集,然后再输出总和,这里注意@distinctUnionOfObjects和@sum不能直接在一个keyPath中连接,所以需要两次调用valueForKeyPath:
NSArray *array = @[@1, @2, @2, @2, @2, @3];
//先取不重复的子集,然后计算总和
//注意@distinctUnionOfObjects和@sum不能直接在一个keyPath中连接,所以需要两次调用valueForKeyPath
NSLog(@”%@”, [[array valueForKeyPath:@”@distinctUnionOfObjects.self”] valueForKeyPath:@”@sum.self”]);
输出:
6
因为集合的不重复子集就是1,2,3. 所以总和就是6.
3,利用NSDictionary的AllKeys(AllValue)方法
可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。
NSArray *arr = @[@aaa,@bbb,@aaa];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for(NSNumber *number in arr)
{
[dict setObject:number forKey:number];
}
}
4,利用NSSet的AllObjects方法
这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。
NSArray *arr = @[@aaa,@bbb,@aaa];
NSSet *set = [NSSet setWithArray:arr];