ios经验总结
一、iPone Size:
手机型号 屏幕尺寸
iPhone 4 4s 320 * 480
iPhone 5 5s 320 * 568
iPhone 6 6s 375 * 667
iphone 6 plus 6s plus 414 * 736
二、给navigation Bar 设置title颜色
UIColor *whiteColor = [UIColor whiteColor];
NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroudColorAttributeName];
self.navigationController.navigationBar setTitleTextAttributes:dic];
三、如何把一个CGPoint存在数组里
CGPoint itemSprite1position = CGPointMake(100,200);
NSMutableArray * array = [[NSMutableArray alloc] initWithObjects:NSStringFromCGPoint(itemSprite1position),nil];
//从数组中取值的过程是这样的
CGPoint point = CGPointFromString([array objuectAtlndex:0]);
NSLog(@"point is %@.",NSStringFromCGPoint(point));
CGPoint itenSprite1position = CGPointMake(100,200);
NSValue *originValue = [NSValue valueWithCGPoint:itemSprite1position];
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:originValue,nil];
NSValue *currentValue = [array objectAtlndex:0];
CGPoint point = [currentValue CGPointValue];
NSLog(@"point is %@.",NSStringFromCGPoint(point));
四、UIColor 获取RGB值
UIColor *color = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
const CGFloat *components = CGColorGetComponents(color.CGColor);
NSLog(@"Red: %f", components[0]);
NSLog(@"Green: %f", components[1]);
NSLog(@"Blue: %f", components[2]);
NSLog(@"Alpha: %f", components[3]);
五、修改textField的placeholder的字体颜色和大小
self.textField.placeholder = @"username is in here";
[self.textField setValue:[UIColor redColor] forKeyPath:@"
_placeholderLabel.textColor"];
[self.textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];
六、两点之间的距离
static __inline__CGFloat CGPointDistanceBetweenTwoPoints(CGPoint point1,CGPoint point2){
CGFloat dx = point2.x - point1.x;
CGFloat dy = point2.y - point1.y;
return sort(dx*dx + dy*dy);
}
七、ios开发-关闭/收起键盘方法总结
1、点击Return按钮时收起键盘
-(BOOL)textFieldShouldReturn:(UITextField*)textField{
return [textField resignFirstRespomder];
}
2、点击背景View收起键盘(View必须是继承于UIControl)
[self.view endEditing:YES];
3、在任何地方加上这句话,可以用来统一收起键盘
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
八、在使用ImagesQA。xcassets时需要注意
将图片直接拖入image到imagesQA.xcassets中时,图片的名字会保留。这个时候如果图片名字过长,那么这个名字会存入到ImagesQA.xacssets中,名字过长会引起Source Tree判断异常。
九、UIPickerView判断开始选择到选择结束
开始选择的,需要在继承UIPickerView,创建一个子类,在子类中继承
-(UIView*)hitTest:(CGPoint)pointwithEvent(UIEvent*)event
当[super hitTest:point withEvent:event]返回不是nil的时候,说明是点击中UIPickerView中了。结束选择的,实现UIPickerView的delegate方法
-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
当调用这个方法的时候,说明选择已经结束。
十、ios模拟器 键盘事件
当iOS模拟器 选择了Keyboard->Connect Ha�adware keyboard后,不弹出键盘。当代码中添加了
[[NSNotidicationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil]
进行键盘事件的获取。那么在此情景下将不会调用-(void)keyboardWillHide。因为没有键盘的隐藏和显示
十一、在ios7上使用size classes后上面下面黑色
使用了size classes后,在ios7的模拟器上出现了上面和下面部分的黑色可以在General->App Icons and Launch Images->Launch Images Source中设置Images.xcassets来解决。
十二、设置不同size在size classes
Font中设置了不同的size classes。
十三、线程中更新UILabel的text
[self.label2 performSelectorOnMainThread:@selector(setText:)]
withObject:textDisplay waitUntilDone:YES];
label1 为UILabel,当在子线程中,需要进行text的更新的时候,可以使用这个方法来更新。其他的UIView 也都是一样的。
十四、使用UIScrollViewKeyboardDismissMode实现了Message app的行为
像Messages app一样在滚动的时候可以让键盘消失是一种非常好的体验。然而,将这种行为整合到你的app很难。幸运的是,苹果给UIScrollView添加了一个很好用的属性keyboardDismissMode,这样可以方便很多。
现在仅仅只需要在Storyboard中改变一个简单的属性,或者添加一行代码,你的app可以和办到和Messages app一样的事情了。
这个 属性使用了新的UIScrollViewKeyboardDismissMode enum枚举类型。这个enum枚举可行的值 如下:
typedef NS_ENUM(NSInteger, UIScrollViewKeyboardDismissMode) {
UIScrollViewKeyboardDismissModeNone,
UIScrollViewKeyboardDismissModeOnDrag, // dismisses the keyboard when a drag begins
UIScrollViewKeyboardDismissModeInteractive, // the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss
} NS_ENUM_AVAILABLE_IOS(7_0);
以下是让键盘可以在混动的时候消失需要设置的属性:
十五、报错”_sqlite3_bind_blob",referenced from:
将sqlite.dylib加载到framework
十六、ios7 statusbar 文字颜色
ios7上,默认status bar字体颜色是黑色的,要修改为白色的需要在infoPlist里设置UIViewControllerBasedStatusBarAppearance为NO,然后在代码里添加:
[application setStatusBarStyle:UIStatusBarStyleLightContent];
十七、获取当前硬盘空间
NSFilManager *fm = [NSFileManager defaultManager];
NSDictionary *fattributes = [fm atributtesOfFileSystemForPath:NSHomeDirextory() error:nil];
NSLog(@"容量%lldG",[[fattributes objectForKey:NSFileSystemSize] longLongValue]/1000000000);
NSLog(@"可用%lldG",[[fattributes objectForKey:NSFileSystemFreeSize] longLongValue]/1000000000);
十八、给UIView设置透明度,不影响sub views
UIView设置了alpha值,但其中的内容也恨着变透明。有没有解决办法?设置background color的颜色中的透明度,比如
[self.testView setBackgroundColor:[UIColor colorWithRed:0.0 green:1.0 blue:1.0 alpha:0.5]];
设置了color的alpha,就可以实现背景色有透明度,当其他sub views不受影响给color添加alpha,或修稿alpha的值。
[view.backgroundColor colorWithAlphaComponent:0.5];
十九、将color转为UIImage
//将color转为UIImage
-(UIImage *)createImageWithColor:(UIColor*)color{
CGRect rect = CGRectMake(0.0f,0.0f,1.0f,1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,[color CGColor]);
CGContextFillRect(context,rect);
UIImage*theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
二十、NSTimer用法
NSTimer*timer = [NSTimer scheduledTimerWithTimerlnterval:0.2 target:self selector:@selector(tick:) userInfo:nil repeats:YES];
[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
在NSRunLoop中添加定时器
二十一、Bundle identifier应用标识符
Bundle identifier是应用的标识符,表示应用和其他APP的区别
二十二、NSDate获取几年前的时间
//获取40年前的日期
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComPonents *dateComponents = [[NSDateComponents alloc] init];
[dateCompinents setYear:-40];
self.birthDate = [gregorian dateByAddingComponents:dateCompomemts toDate:[NSDate date] options:0];
二十三、ios加载启动图时隐藏statusbar
只需要在info。plies中加入Status bar is initially hidden 设置为YES就好
二十四、ios开发,工程中混合使用ARC和非ARC
Xcode项目中我们可以使用ARC和非ARC得混合模式。
如果你的项目使用的非ARC模式,则为ARC模式中的代码文件加入-fobjc-arc标签。如果你的项目使用的是ARC模式,则为非ARC模式的代码文件加入-fho-objc-arc标签。添加标签的方法:
打开:你的target->Build Phases->Compile Sources.
双击对应*.m文件
在弹出窗口中输入上面提到的标签-fobjc-arc/-fno-objc-arc
点击done保存
二十五、ios7中bounbingRectWithSize:options:attributes:context:计算文本尺寸的使用
之前使用了NSString类的sizeWithFont:constrainedToSize:lineBreakMode:方法,但是该方法已经被ios7 Deprecated了,而ios7新出了一个boudingRectWithSize:options:attributes:context方法来代替。而具体怎么使用呢,尤其那个attribute
NSDictionary *attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:13]};
CGSize size = [@"相关NSString"boundingRectWithSize:CGSizeMake(100,0)options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
二十六、NSDate使用注意
NSDate在保存数据,传输数据中,一般最好使用UTC时间。
在显示到界面给用户看的时候,需要转换为本地时间
二十七、在UIViewController中property的一个UIViewController的Present问题
如果在一个UIViewController A中有一个property属性为UIViewController B,实例化后,将BVC.view 添加到主UIViewController A.view上,如果在viewB上进行-(void)presentViewController:(UIViewController*)viewControllerToPresent animated:(BOOL)flag completion:(void(^)(void))completion NS _AVAILABLE_IOS(5_0);的操作将会出现,“Presenting view controllers on detached view controllers is discourage”的问题。
以为BVC已经present到AVC中了,所以再一次进行会出现错误。可以使用以下代码解决:
[self.view.window.rootViewController presentViewController:imagePicker animated:YES completion:^{
NSLog(@"Finished");
}];
二十八、UITableViewCell indentationLevel使用
UITableViewCell 属性 NSInteger indentationLevel的使用,对cell设置indentationLevel的值,可以将cell分级别。
还有CGFloat indentationWidth;属性,设置缩进的宽度。
总缩进的宽度:indentationLevel*indentationWidth
二十九、ActivityViewController使用AirDrop分享
使用AirDrop进行分享:
NSArray *array = @[@"test1",@"test2"];
UIActivityViewController *activityVC = [[UIActivityController alloc] initWithActivityItems:array applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:^{
NSLog(@"Air");
}];
就可以弹出界面:
三十、获取CGRect的height
获取CGRect的height,除了self.createNewMessageTableView.frame.size.height这样进行点语法获取。还可以使用CGRectGetHeight(self.createNewMessageTableView.frame)进行直接获取。除了这个方法还有 fun CGRectGetWidth(rect:CGRect)->CGFloat等等简单地方法。
func CGRectGetMinX(rect: CGRect) -> CGFloat
func CGRectGetMidX(rect: CGRect) -> CGFloat
func CGRectGetMaxX(rect: CGRect) -> CGFloat
func CGRectGetMinY(rect: CGRect) -> CGFloat
三十一、打印%
NSString *printPercentStr = [NSString stringWithFormat:@"%%"];
三十二、在工程中查看是否使用 IDFA
allentekiMac-mini:JiKaTongGit lihuaxie$ grep -r advertisingIdentifier .
grep: ./ios/Framework/AMapSearchKit.framework/Resources: No such file or directory
Binary file ./ios/Framework/MAMapKit.framework/MAMapKit matches
Binary file ./ios/Framework/MAMapKit.framework/Versions/2.4.1.e00ba6a/MAMapKit matches
Binary file ./ios/Framework/MAMapKit.framework/Versions/Current/MAMapKit matches
Binary file ./ios/JiKaTong.xcodeproj/project.xcworkspace/xcuserdata/lihuaxie.xcuserdatad/UserInterfaceState.xcuserstate matches
allentekiMac-mini:JiKaTongGit lihuaxie$
打开终端,到工程目录中, 输入:
grep -r advertisingIdentifier .
可以看到那些文件中用到了IDFA,如果用到了就会被显示出来。
三十三、APP 屏蔽 触发事件
//Disable user interaction when download finishes
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];