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

参照连接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容