阶段性iOS开发技术总结160826

计划着以后每周一次博客记录

每个技术点一篇,每篇持续更新。。。。。。

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

还可以使用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”]); 

输出: 

因为集合的不重复子集就是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];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值