UITableView收起键盘
何必这么麻烦,一个属性搞定,效果好(UIScrollView同样可以使用)以前是不是觉得[self.view endEditing:YES];很屌,这个下面的更屌。yourTableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;另外一个枚举为UIScrollViewKeyboardDismissModeInteractive,表示在键盘内部滑动,键盘逐渐下去。
禁止手机睡眠
[UIApplication sharedApplication].idleTimerDisabled = YES;
tableView beginUpdates 和 endUpdates
1.beginUpdates 和 endUpdates必须成对使用
2、使用beginUpdates和endUpdates可以在改变一些行(row)的高度时自带动画,并且不需要Reload row(不用调用cellForRow,仅仅需要调用heightForRow,这样效率最高)。
3、在beginUpdates和endUpdates中执行insert,delete,select,reload row时,动画效果更加同步和顺滑,否则动画卡顿且table的属性(如row count)可能会失效。
4、在beginUpdates 和 endUpdates中执行 reloadData 方法和直接reloadData一样,没有相应的中间动画。
统一收起键盘
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
wkwebview报错
使用wkwebview时,push后,再pop返回,报错了:
Cannot form weak reference to instance (xxxx) of class xxxx. It is possible that this object was over-released, or is in the process of deallocation.
原因是给webView.scrollView设置了代理:webView.scrollView.delegate = self ;
解决办法:
-(void)dealloc
{
webView.scrollView.delegate = nil;
}
linker command failed with exit code 1
原因和解决办法:
1、看看是不是有新添加的文件跟之前文件同名
2、错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。
3、SVN或git忽略了某些文件,如.o 等文件没能update下来,查看.o文件可能是红色的,可以重新添加或者修改SVN(git)的忽略设置
4、把.a文件删除再重新拖到项目中解决问题
5、可能重复添加了文件(也可能没勾选 Copy items if neded 这个选项),建议删除后重新添加
6、工程中文件名重复了 也会出现同样的错误
7、Build Settings”->”Enable Bitcode”设置为NO ,因为有些SDK不支持Bitcode
8、可能在引用的时候 可能写的是#import “XXXXX.m” ,如果是改为#import “XXXXX.h”
9、可能你导入的SDK只能在真机下才能运行,模拟器会报错!
10、找到 Build settings->Linking->Other Linker Flags将此属性修改成-all_load 或者 -ObjC
11、Build settings->Search Path->Library Search Paths 添加静态库的相应路径
CABasicAnimation 按home键后台之后,再切回来动画就停止
CABasicAnimation有个属性removedOnCompletion,默认值为YES,意思是动画在指定时间段内完成后,就会从层上自动移除。
如果CABasicAnimation 按home键后台之后,再切回来动画就停止,只要将removedOnCompletion属性设为no动画就不会停止,直到你移除该动画
播放一张张连续的图片
// 方法一
imageView.animationImages = @[[UIImage imageNamed:@”animate_1”], [UIImage imageNamed:@”animate_2”], [UIImage imageNamed:@”animate_3”]];
imageView.animationDuration = 1.0;
// 方法二
imageView.image = [UIImage animatedImageNamed:@”animate_” duration:1.0];
// 方法二解释下,这个方法会加载animate_为前缀的,后边0-1024,也就是animate_0、animate_1一直到animate_1024
判断两个rect是否有交叉
if (CGRectIntersectsRect(rect1, rect2)) {
}
键盘上方增加工具栏
UIToolbar *keyboardDoneButtonView = [[UIToolbar alloc] init];
[keyboardDoneButtonView sizeToFit];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@”Done”
style:UIBarButtonItemStyleBordered target:self
action:@selector(doneClicked:)];
[keyboardDoneButtonView setItems:[NSArray arrayWithObjects:doneButton, nil]];
txtField.inputAccessoryView = keyboardDoneButtonView;
判断一个view是否为另一个view的子视图
// 如果myView是self.view本身,也会返回yes
BOOL isSubView = [myView isDescendantOfView:self.view];
判断某一行的cell是否已经显示
CGRect cellRect = [tableView rectForRowAtIndexPath:indexPath];
BOOL completelyVisible = CGRectContainsRect(tableView.bounds, cellRect);
隐藏UITextView/UITextField光标
textField.tintColor = [UIColor clearColor];
当UITextView/UITextField中没有文字时,禁用回车键
textField.enablesReturnKeyAutomatically = YES;