iOS开发iOS 技术文档首页投稿(暂停使用,暂停投稿)

ios经验总结

2016-06-30  本文已影响249人  凡哥

一、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];

参照连接

上一篇下一篇

猜你喜欢

热点阅读