{"id":379,"date":"2016-05-15T04:37:02","date_gmt":"2016-05-15T04:37:02","guid":{"rendered":"http:\/\/blogs.softwareclue.com\/?p=379"},"modified":"2016-05-15T04:37:02","modified_gmt":"2016-05-15T04:37:02","slug":"ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89","status":"publish","type":"post","link":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89","title":{"rendered":"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09"},"content":{"rendered":"<blockquote><p>\u6765\u6e90\uff1a\u8774\u8776\u4e4b\u68a6\u5929\u4f7f<\/p>\n<p>\u94fe\u63a5\uff1ahttp:\/\/www.jianshu.com\/p\/d333cf6ae4b0<\/p><\/blockquote>\n<p>\u5728iOS\u5f00\u53d1\u4e2d\u7ecf\u5e38\u9700\u8981\u4f7f\u7528\u7684\u6216\u4e0d\u5e38\u7528\u7684\u77e5\u8bc6\u70b9\u7684\u603b\u7ed3\uff0c\u51e0\u5e74\u7684\u6536\u85cf\u548c\u79ef\u7d2f\uff08\u8e29\u8fc7\u7684\u5751\uff09\u3002<\/p>\n<p>\u4e00\u3001 iPhone Size<\/p>\n<table width=\"599\">\n<thead>\n<tr>\n<th>\u624b\u673a\u578b\u53f7<\/th>\n<th>\u5c4f\u5e55\u5c3a\u5bf8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>iPhone 4 4s<\/td>\n<td>320 * 480<\/td>\n<\/tr>\n<tr>\n<td>iPhone 5 5s<\/td>\n<td>320 * 568<\/td>\n<\/tr>\n<tr>\n<td>iPhone 6 6s<\/td>\n<td>375 * 667<\/td>\n<\/tr>\n<tr>\n<td>iphone 6 plus 6s plus<\/td>\n<td>414 * 736<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4e8c\u3001 \u7ed9navigation Bar \u8bbe\u7f6e title \u989c\u8272<\/p>\n<blockquote><p><span class=\"crayon-e \">UIColor *<\/span><span class=\"crayon-v\">whiteColor<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">UIColor <\/span><span class=\"crayon-v\">whiteColor<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-e \">NSDictionary *<\/span><span class=\"crayon-v\">dic<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NSDictionary <\/span><span class=\"crayon-v\">dictionaryWithObject<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">whiteColor <\/span><span class=\"crayon-v\">forKey<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">NSForegroundColorAttributeName<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">navigationController<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">navigationBar <\/span><span class=\"crayon-v\">setTitleTextAttributes<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">dic<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u4e09\u3001 \u5982\u4f55\u628a\u4e00\u4e2aCGPoint\u5b58\u5165\u6570\u7ec4\u91cc<\/p>\n<blockquote><p><span class=\"crayon-e\">CGPoint\u00a0\u00a0<\/span><span class=\"crayon-v\">itemSprite1position<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-e\">CGPointMake<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">100<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">200<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-e \">NSMutableArray *<\/span> <span class=\"crayon-t\">array<\/span><span class=\"crayon-h\">\u00a0\u00a0= <\/span><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">NSMutableArray <\/span><span class=\"crayon-v\">alloc<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">initWithObjects<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">NSStringFromCGPoint<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">itemSprite1position<\/span><span class=\"crayon-sy\">),<\/span><span class=\"crayon-v\">nil<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0\u00a0\u00a0\u4ece\u6570\u7ec4\u4e2d\u53d6\u503c\u7684\u8fc7\u7a0b\u662f\u8fd9\u6837\u7684\uff1a\u00a0\u00a0 <\/span><\/p>\n<p><span class=\"crayon-e\">CGPoint <\/span><span class=\"crayon-v\">point<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-e\">CGPointFromString<\/span><span class=\"crayon-sy\">([<\/span><span class=\"crayon-t\">array<\/span> <span class=\"crayon-v\">objectAtIndex<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]);<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;point is %@.&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">NSStringFromCGPoint<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">point<\/span><span class=\"crayon-sy\">));<\/span><\/p><\/blockquote>\n<p>\u8c22\u8c22@bigParis\u7684\u5efa\u8bae\uff0c\u53ef\u4ee5\u7528NSValue\u8fdb\u884c\u57fa\u7840\u6570\u636e\u7684\u4fdd\u5b58\uff0c\u7528\u8fd9\u4e2a\u65b9\u6cd5\u66f4\u52a0\u6e05\u6670\u660e\u786e\u3002<\/p>\n<blockquote><p><span class=\"crayon-e\">CGPoint\u00a0\u00a0<\/span><span class=\"crayon-v\">itemSprite1position<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-e\">CGPointMake<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">100<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">200<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-e \">NSValue *<\/span><span class=\"crayon-v\">originValue<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NSValue <\/span><span class=\"crayon-v\">valueWithCGPoint<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">itemSprite1position<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-e \">NSMutableArray *<\/span> <span class=\"crayon-t\">array<\/span><span class=\"crayon-h\">\u00a0\u00a0= <\/span><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">NSMutableArray <\/span><span class=\"crayon-v\">alloc<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">initWithObjects<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">originValue<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">nil<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p>\/\/\u00a0\u00a0\u00a0\u00a0\u4ece\u6570\u7ec4\u4e2d\u53d6\u503c\u7684\u8fc7\u7a0b\u662f\u8fd9\u6837\u7684\uff1a<\/p>\n<p><span class=\"crayon-e \">NSValue *<\/span><span class=\"crayon-v\">currentValue<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-t\">array<\/span> <span class=\"crayon-v\">objectAtIndex<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-e\">CGPoint <\/span><span class=\"crayon-v\">point<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">currentValue <\/span><span class=\"crayon-v\">CGPointValue<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;point is %@.&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">NSStringFromCGPoint<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">point<\/span><span class=\"crayon-sy\">));<\/span><\/p><\/blockquote>\n<p>\u73b0\u5728Xcode7\u540eOC\u652f\u6301\u6cdb\u578b\u4e86\uff0c\u53ef\u4ee5\u7528NSMutableArray *array\u6765\u4fdd\u5b58\u3002<\/p>\n<p>\u56db\u3001 UIColor \u83b7\u53d6 RGB \u503c<\/p>\n<blockquote><p><span class=\"crayon-e \">UIColor *<\/span><span class=\"crayon-v\">color<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">UIColor <\/span><span class=\"crayon-v\">colorWithRed<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0.0<\/span> <span class=\"crayon-v\">green<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0.0<\/span> <span class=\"crayon-v\">blue<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">1.0<\/span> <span class=\"crayon-v\">alpha<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">1.0<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-m\">const<\/span> <span class=\"crayon-e \">CGFloat *<\/span><span class=\"crayon-v\">components<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-e\">CGColorGetComponents<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">color<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">CGColor<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;Red: %f&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">components<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">]);<\/span><\/p>\n<p><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;Green: %f&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">components<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]);<\/span><\/p>\n<p><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;Blue: %f&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">components<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-sy\">]);<\/span><\/p>\n<p><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;Alpha: %f&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">components<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">]);<\/span><\/p><\/blockquote>\n<p>\u4e94\u3001 \u4fee\u6539textField\u7684placeholder\u7684\u5b57\u4f53\u989c\u8272\u3001\u5927\u5c0f<\/p>\n<blockquote><p><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">textField<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">placeholder<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-s\">&#8220;username is in here!&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/p>\n<p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">textField <\/span><span class=\"crayon-v\">setValue<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">UIColor <\/span><span class=\"crayon-v\">redColor<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">forKeyPath<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-s\">&#8220;_placeholderLabel.textColor&#8221;<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">textField <\/span><span class=\"crayon-v\">setValue<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">UIFont <\/span><span class=\"crayon-v\">boldSystemFontOfSize<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">16<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">forKeyPath<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-s\">&#8220;_placeholderLabel.font&#8221;<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u516d\u3001\u4e24\u70b9\u4e4b\u95f4\u7684\u8ddd\u79bb<\/p>\n<blockquote><p><span class=\"crayon-m\">static<\/span> <span class=\"crayon-e\">__inline__ CGFloat CGPointDistanceBetweenTwoPoints<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">CGPoint <\/span><span class=\"crayon-v\">point1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">CGPoint <\/span><span class=\"crayon-v\">point2<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">{<\/span> <span class=\"crayon-e\">CGFloat <\/span><span class=\"crayon-v\">dx<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-v\">point2<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-h\"> &#8211; <\/span><span class=\"crayon-v\">point1<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">x<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">CGFloat <\/span><span class=\"crayon-v\">dy<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-v\">point2<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-h\"> &#8211; <\/span><span class=\"crayon-v\">point1<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">y<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">return<\/span> <span class=\"crayon-e\">sqrt<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">dx*<\/span><span class=\"crayon-v\">dx<\/span><span class=\"crayon-h\"> + <\/span><span class=\"crayon-e \">dy*<\/span><span class=\"crayon-v\">dy<\/span><span class=\"crayon-sy\">);}<\/span><\/p><\/blockquote>\n<p>\u4e03\u3001IOS\u5f00\u53d1\uff0d\u5173\u95ed\/\u6536\u8d77\u952e\u76d8\u65b9\u6cd5\u603b\u7ed3<\/p>\n<p>1\u3001\u70b9\u51fbReturn\u6309\u626d\u65f6\u6536\u8d77\u952e\u76d8<\/p>\n<blockquote><p><span class=\"crayon-o\">&#8211; <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">BOOL<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">textFieldShouldReturn<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">UITextField *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">textField<\/span><\/p>\n<p>{<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">textField <\/span><span class=\"crayon-v\">resignFirstResponder<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p>}<\/p><\/blockquote>\n<p>2\u3001\u70b9\u51fb\u80cc\u666fView\u6536\u8d77\u952e\u76d8\uff08\u4f60\u7684View\u5fc5\u987b\u662f\u7ee7\u627f\u4e8eUIControl\uff09<\/p>\n<blockquote><p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">view <\/span><span class=\"crayon-v\">endEditing<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">YES<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>3\u3001\u4f60\u53ef\u4ee5\u5728\u4efb\u4f55\u5730\u65b9\u52a0\u4e0a\u8fd9\u53e5\u8bdd\uff0c\u53ef\u4ee5\u7528\u6765\u7edf\u4e00\u6536\u8d77\u952e\u76d8<\/p>\n<blockquote><p><span class=\"crayon-sy\">[[[<\/span><span class=\"crayon-e\">UIApplication <\/span><span class=\"crayon-v\">sharedApplication<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">keyWindow<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">endEditing<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">YES<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u516b\u3001\u5728\u4f7f\u7528 ImagesQA.xcassets \u65f6\u9700\u8981\u6ce8\u610f<\/p>\n<p>\u5c06\u56fe\u7247\u76f4\u63a5\u62d6\u5165image\u5230ImagesQA.xcassets\u4e2d\u65f6\uff0c\u56fe\u7247\u7684\u540d\u5b57\u4f1a\u4fdd\u7559\u3002<\/p>\n<p>\u8fd9\u4e2a\u65f6\u5019\u5982\u679c\u56fe\u7247\u7684\u540d\u5b57\u8fc7\u957f\uff0c\u90a3\u4e48\u8fd9\u4e2a\u540d\u5b57\u4f1a\u5b58\u5165\u5230ImagesQA.xcassets\u4e2d\uff0c\u540d\u5b57\u8fc7\u957f\u4f1a\u5f15\u8d77SourceTree\u5224\u65ad\u5f02\u5e38\u3002<\/p>\n<p>\u4e5d\u3001UIPickerView \u5224\u65ad\u5f00\u59cb\u9009\u62e9\u5230\u9009\u62e9\u7ed3\u675f<\/p>\n<p>\u5f00\u59cb\u9009\u62e9\u7684\uff0c\u9700\u8981\u5728\u7ee7\u627fUiPickerView\uff0c\u521b\u5efa\u4e00\u4e2a\u5b50\u7c7b\uff0c\u5728\u5b50\u7c7b\u4e2d\u91cd\u8f7d<\/p>\n<blockquote><p><span class=\"crayon-o\">&#8211; <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">UIView*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">hitTest<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">CGPoint<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">point <\/span><span class=\"crayon-v\">withEvent<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">UIEvent*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">event<\/span><\/p><\/blockquote>\n<p>\u5f53[super hitTest:point withEvent:event]\u8fd4\u56de\u4e0d\u662fnil\u7684\u65f6\u5019\uff0c\u8bf4\u660e\u662f\u70b9\u51fb\u4e2dUIPickerView\u4e2d\u4e86\u3002<\/p>\n<p>\u7ed3\u675f\u9009\u62e9\u7684\uff0c \u5b9e\u73b0UIPickerView\u7684delegate\u65b9\u6cd5<\/p>\n<blockquote><p><span class=\"crayon-o\">&#8211; <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">void<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">pickerView<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">UIPickerView*<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">pickerView <\/span><span class=\"crayon-v\">didSelectRow<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">NSInteger<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">row <\/span><span class=\"crayon-v\">inComponent<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">NSInteger<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">component<\/span><\/p><\/blockquote>\n<p>\u5f53\u8c03\u7528\u8fd9\u4e2a\u65b9\u6cd5\u7684\u65f6\u5019\uff0c\u8bf4\u660e\u9009\u62e9\u5df2\u7ecf\u7ed3\u675f\u4e86\u3002<\/p>\n<p>\u5341\u3001iOS\u6a21\u62df\u5668 \u952e\u76d8\u4e8b\u4ef6<\/p>\n<p>\u5f53iOS\u6a21\u62df\u5668 \u9009\u62e9\u4e86Keybaord-&gt;Connect Hardware keyboard \u540e\uff0c\u4e0d\u5f39\u51fa\u952e\u76d8\u3002<\/p>\n<hr \/>\n<p>\u5f53\u4ee3\u7801\u4e2d\u6dfb\u52a0\u4e86<\/p>\n<blockquote><p><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">NSNotificationCenter <\/span><span class=\"crayon-v\">defaultCenter<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">addObserver<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">self<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">selector<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-e\">selector<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">keyboardWillHide<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">name<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">UIKeyboardWillHideNotification<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-t\">object<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">nil<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u8fdb\u884c\u952e\u76d8\u4e8b\u4ef6\u7684\u83b7\u53d6\u3002\u90a3\u4e48\u5728\u6b64\u60c5\u666f\u4e0b\u5c06\u4e0d\u4f1a\u8c03\u7528- (void)keyboardWillHide.<\/p>\n<p>\u56e0\u4e3a\u6ca1\u6709\u952e\u76d8\u7684\u9690\u85cf\u548c\u663e\u793a\u3002<\/p>\n<p>\u5341\u4e00\u3001\u5728ios7\u4e0a\u4f7f\u7528size classes\u540e\u4e0a\u9762\u4e0b\u9762\u9ed1\u8272<\/p>\n<p>\u4f7f\u7528\u4e86size classes\u540e\uff0c\u5728ios7\u7684\u6a21\u62df\u5668\u4e0a\u51fa\u73b0\u4e86\u4e0a\u9762\u548c\u4e0b\u9762\u90e8\u5206\u7684\u9ed1\u8272<\/p>\n<p>\u53ef\u4ee5\u5728General-&gt;App Icons and Launch Images-&gt;Launch Images Source\u4e2d\u8bbe\u7f6eImages.xcassets\u6765\u89e3\u51b3\u3002<\/p>\n<p><img decoding=\"async\" class=\"\" src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1\" data-src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/0?wx_fmt=png\" data-type=\"png\" data-ratio=\"0.22482014388489208\" data-w=\"\" \/><\/p>\n<p>\u5341\u4e8c\u3001\u8bbe\u7f6e\u4e0d\u540csize\u5728size classes<\/p>\n<p>Font\u4e2d\u8bbe\u7f6e\u4e0d\u540c\u7684size classes\u3002<\/p>\n<p><img decoding=\"async\" class=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw\/eHBhY2tldCBiZWdpbj0i77u\/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJDQzA1MTVGNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJDQzA1MTYwNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkNDMDUxNUQ2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkNDMDUxNUU2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw\/eHBhY2tldCBlbmQ9InIiPz6p+a6fAAAAD0lEQVR42mJ89\/Y1QIABAAWXAsgVS\/hWAAAAAElFTkSuQmCC\" data-src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKFKR4udlm7GN9xEZvRIUwGYYra7RrIwAXrDA3Qhw1jQh2KnqBT1L2WA\/0?wx_fmt=png\" data-type=\"png\" data-ratio=\"0.27530364372469635\" data-w=\"247\" \/><\/p>\n<p>\u5341\u4e09\u3001\u7ebf\u7a0b\u4e2d\u66f4\u65b0 UILabel\u7684text<\/p>\n<blockquote><p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">label1 <\/span><span class=\"crayon-v\">performSelectorOnMainThread<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-e\">selector<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">setText<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">withObject<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">textDisplay<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">waitUntilDone<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">YES<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>abel1 \u4e3aUILabel\uff0c\u5f53\u5728\u5b50\u7ebf\u7a0b\u4e2d\uff0c\u9700\u8981\u8fdb\u884ctext\u7684\u66f4\u65b0\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2a\u65b9\u6cd5\u6765\u66f4\u65b0\u3002<\/p>\n<p>\u5176\u4ed6\u7684UIView \u4e5f\u90fd\u662f\u4e00\u6837\u7684\u3002<\/p>\n<p>\u5341\u56db\u3001\u4f7f\u7528UIScrollViewKeyboardDismissMode\u5b9e\u73b0\u4e86Message app\u7684\u884c\u4e3a<\/p>\n<p>\u50cfMessages app\u4e00\u6837\u5728\u6eda\u52a8\u7684\u65f6\u5019\u53ef\u4ee5\u8ba9\u952e\u76d8\u6d88\u5931\u662f\u4e00\u79cd\u975e\u5e38\u597d\u7684\u4f53\u9a8c\u3002\u7136\u800c\uff0c\u5c06\u8fd9\u79cd\u884c\u4e3a\u6574\u5408\u5230\u4f60\u7684app\u5f88\u96be\u3002\u5e78\u8fd0\u7684\u662f\uff0c\u82f9\u679c\u7ed9UIScrollView\u6dfb\u52a0\u4e86\u4e00\u4e2a\u5f88\u597d\u7528\u7684\u5c5e\u6027keyboardDismissMode\uff0c\u8fd9\u6837\u53ef\u4ee5\u65b9\u4fbf\u5f88\u591a\u3002<\/p>\n<p>\u73b0\u5728\u4ec5\u4ec5\u53ea\u9700\u8981\u5728Storyboard\u4e2d\u6539\u53d8\u4e00\u4e2a\u7b80\u5355\u7684\u5c5e\u6027\uff0c\u6216\u8005\u589e\u52a0\u4e00\u884c\u4ee3\u7801\uff0c\u4f60\u7684app\u53ef\u4ee5\u548c\u529e\u5230\u548cMessages app\u4e00\u6837\u7684\u4e8b\u60c5\u4e86\u3002<\/p>\n<p>\u8fd9\u4e2a\u5c5e\u6027\u4f7f\u7528\u4e86\u65b0\u7684UIScrollViewKeyboardDismissMode enum\u679a\u4e3e\u7c7b\u578b\u3002\u8fd9\u4e2aenum\u679a\u4e3e\u7c7b\u578b\u53ef\u80fd\u7684\u503c\u5982\u4e0b\uff1a<\/p>\n<blockquote><p><span class=\"crayon-r\">typedef<\/span> <span class=\"crayon-e\">NS_ENUM<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">NSInteger<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">UIScrollViewKeyboardDismissMode<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">UIScrollViewKeyboardDismissModeNone<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">UIScrollViewKeyboardDismissModeOnDrag<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ dismisses the keyboard when a drag begins<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">UIScrollViewKeyboardDismissModeInteractive<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-c\">\/\/ the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss<\/span><\/p>\n<p><span class=\"crayon-sy\">}<\/span> <span class=\"crayon-e\">NS_ENUM_AVAILABLE_IOS<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">7_0<\/span><span class=\"crayon-sy\">);<\/span><\/p><\/blockquote>\n<p>\u4ee5\u4e0b\u662f\u8ba9\u952e\u76d8\u53ef\u4ee5\u5728\u6eda\u52a8\u7684\u65f6\u5019\u6d88\u5931\u9700\u8981\u8bbe\u7f6e\u7684\u5c5e\u6027\uff1a<\/p>\n<p><img decoding=\"async\" class=\"\" src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKU3ZBTGFJyOzhy5QTIpja4xYl352KmQWacBHh4fBuvltaM0Vu27zKwA\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1\" data-src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKU3ZBTGFJyOzhy5QTIpja4xYl352KmQWacBHh4fBuvltaM0Vu27zKwA\/0?wx_fmt=png\" data-ratio=\"1.4326647564469914\" data-w=\"349\" data-type=\"png\" \/><\/p>\n<p>\u5341\u4e94\u3001\u62a5\u9519 \u201c_sqlite3_bind_blob\u201d, referenced from:<\/p>\n<p>\u5c06 sqlite3.dylib\u52a0\u8f7d\u5230framework<\/p>\n<p>\u5341\u516d\u3001ios7 statusbar \u6587\u5b57\u989c\u8272<\/p>\n<p>iOS7\u4e0a\uff0c\u9ed8\u8ba4status bar\u5b57\u4f53\u989c\u8272\u662f\u9ed1\u8272\u7684\uff0c\u8981\u4fee\u6539\u4e3a\u767d\u8272\u7684\u9700\u8981\u5728infoPlist\u91cc\u8bbe\u7f6eUIViewControllerBasedStatusBarAppearance\u4e3aNO\uff0c\u7136\u540e\u5728\u4ee3\u7801\u91cc\u6dfb\u52a0\uff1a<\/p>\n<p>[application setStatusBarStyle:UIStatusBarStyleLightContent];<\/p>\n<p>\u5341\u4e03\u3001\u83b7\u5f97\u5f53\u524d\u786c\u76d8\u7a7a\u95f4<\/p>\n<blockquote><p><span class=\"crayon-e \">NSFileManager *<\/span><span class=\"crayon-v\">fm<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NSFileManager <\/span><span class=\"crayon-v\">defaultManager<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e \">NSDictionary *<\/span><span class=\"crayon-v\">fattributes<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">fm <\/span><span class=\"crayon-v\">attributesOfFileSystemForPath<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">NSHomeDirectory<\/span><span class=\"crayon-sy\">()<\/span> <span class=\"crayon-v\">error<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">nil<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;\u5bb9\u91cf%lldG&#8221;<\/span><span class=\"crayon-sy\">,[[<\/span><span class=\"crayon-e\">fattributes <\/span><span class=\"crayon-v\">objectForKey<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">NSFileSystemSize<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">longLongValue<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">1000000000<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;\u53ef\u7528%lldG&#8221;<\/span><span class=\"crayon-sy\">,[[<\/span><span class=\"crayon-e\">fattributes <\/span><span class=\"crayon-v\">objectForKey<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">NSFileSystemFreeSize<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">longLongValue<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">1000000000<\/span><span class=\"crayon-sy\">);<\/span><\/p><\/blockquote>\n<p>\u5341\u516b\u3001\u7ed9UIView \u8bbe\u7f6e\u900f\u660e\u5ea6\uff0c\u4e0d\u5f71\u54cd\u5176\u4ed6sub views<\/p>\n<p>UIView\u8bbe\u7f6e\u4e86alpha\u503c\uff0c\u4f46\u5176\u4e2d\u7684\u5185\u5bb9\u4e5f\u8ddf\u7740\u53d8\u900f\u660e\u3002\u6709\u6ca1\u6709\u89e3\u51b3\u529e\u6cd5\uff1f<\/p>\n<p>\u8bbe\u7f6ebackground color\u7684\u989c\u8272\u4e2d\u7684\u900f\u660e\u5ea6<\/p>\n<p>\u6bd4\u5982\uff1a<\/p>\n<blockquote><p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">testView <\/span><span class=\"crayon-v\">setBackgroundColor<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">UIColor <\/span><span class=\"crayon-v\">colorWithRed<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0.0<\/span> <span class=\"crayon-v\">green<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">1.0<\/span> <span class=\"crayon-v\">blue<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">1.0<\/span> <span class=\"crayon-v\">alpha<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0.5<\/span><span class=\"crayon-sy\">]];<\/span><\/p><\/blockquote>\n<p>\u8bbe\u7f6e\u4e86color\u7684alpha\uff0c \u5c31\u53ef\u4ee5\u5b9e\u73b0\u80cc\u666f\u8272\u6709\u900f\u660e\u5ea6\uff0c\u5f53\u5176\u4ed6sub views\u4e0d\u53d7\u5f71\u54cd\u7ed9color \u6dfb\u52a0 alpha\uff0c\u6216\u4fee\u6539alpha\u7684\u503c\u3002<\/p>\n<blockquote><p>\/\/ Returns a color in the same color space as the receiver with the specified alpha component.<\/p>\n<p><span class=\"crayon-o\">&#8211; <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">UIColor *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">colorWithAlphaComponent<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">CGFloat<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">alpha<\/span><span class=\"crayon-sy\">;<\/span><\/p>\n<p>\/\/ eg.<\/p>\n<p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">view<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">backgroundColor <\/span><span class=\"crayon-v\">colorWithAlphaComponent<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0.5<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u5341\u4e5d\u3001\u5c06color\u8f6c\u4e3aUIImage<\/p>\n<blockquote><p>\/\/\u5c06color\u8f6c\u4e3aUIImage<\/p>\n<p><span class=\"crayon-o\">&#8211; <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">UIImage *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-v\">createImageWithColor<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e \">UIColor *<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-e\">color<\/span><\/p>\n<p>{<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">CGRect <\/span><span class=\"crayon-v\">rect<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-e\">CGRectMake<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">0.0f<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0.0f<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1.0f<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1.0f<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">UIGraphicsBeginImageContext<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rect<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">CGContextRef <\/span><span class=\"crayon-v\">context<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-e\">UIGraphicsGetCurrentContext<\/span><span class=\"crayon-sy\">();<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">CGContextSetFillColorWithColor<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">context<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">color <\/span><span class=\"crayon-v\">CGColor<\/span><span class=\"crayon-sy\">]);<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">CGContextFillRect<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">context<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">rect<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e \">UIImage *<\/span><span class=\"crayon-v\">theImage<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-e\">UIGraphicsGetImageFromCurrentImageContext<\/span><span class=\"crayon-sy\">();<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">UIGraphicsEndImageContext<\/span><span class=\"crayon-sy\">();<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span> <span class=\"crayon-v\">theImage<\/span><span class=\"crayon-sy\">;<\/span><\/p>\n<p>}<\/p><\/blockquote>\n<p>\u4e8c\u5341\u3001NSTimer \u7528\u6cd5<\/p>\n<blockquote><p><span class=\"crayon-e \">NSTimer *<\/span><span class=\"crayon-v\">timer<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NSTimer <\/span><span class=\"crayon-v\">scheduledTimerWithTimeInterval<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-cn\">02<\/span> <span class=\"crayon-v\">target<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">self <\/span><span class=\"crayon-v\">selector<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-e\">selector<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">tick<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-v\">userInfo<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">nil <\/span><span class=\"crayon-v\">repeats<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">YES<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">NSRunLoop <\/span><span class=\"crayon-v\">currentRunLoop<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">addTimer<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">timer <\/span><span class=\"crayon-v\">forMode<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">NSRunLoopCommonModes<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u5728NSRunLoop \u4e2d\u6dfb\u52a0\u5b9a\u65f6\u5668.<\/p>\n<p>\u4e8c\u5341\u4e00\u3001Bundle identifier \u5e94\u7528\u6807\u793a\u7b26<\/p>\n<p>Bundle identifier \u662f\u5e94\u7528\u7684\u6807\u793a\u7b26\uff0c\u8868\u660e\u5e94\u7528\u548c\u5176\u4ed6APP\u7684\u533a\u522b\u3002<\/p>\n<p>\u4e8c\u5341\u4e8c\u3001NSDate \u83b7\u53d6\u51e0\u5e74\u524d\u7684\u65f6\u95f4<\/p>\n<p>eg. \u83b7\u53d6\u523040\u5e74\u524d\u7684\u65e5\u671f<\/p>\n<blockquote><p><span class=\"crayon-e \">NSCalendar *<\/span><span class=\"crayon-v\">gregorian<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">NSCalendar <\/span><span class=\"crayon-v\">alloc<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">initWithCalendarIdentifier<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">NSGregorianCalendar<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-e \">NSDateComponents *<\/span><span class=\"crayon-v\">dateComponents<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">NSDateComponents <\/span><span class=\"crayon-v\">alloc<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">init<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">dateComponents <\/span><span class=\"crayon-v\">setYear<\/span><span class=\"crayon-o\">:-<\/span><span class=\"crayon-cn\">40<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">birthDate<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">gregorian <\/span><span class=\"crayon-v\">dateByAddingComponents<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">dateComponents <\/span><span class=\"crayon-v\">toDate<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NSDate <\/span><span class=\"crayon-v\">date<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">options<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u4e8c\u5341\u4e09\u3001iOS\u52a0\u8f7d\u542f\u52a8\u56fe\u7684\u65f6\u5019\u9690\u85cfstatusbar<\/p>\n<p>\u53ea\u9700\u9700\u8981\u5728info.plist\u4e2d\u52a0\u5165Status bar is initially hidden \u8bbe\u7f6e\u4e3aYES\u5c31\u597d<\/p>\n<p><img decoding=\"async\" class=\"\" src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKZ1p51lugxcuknUE4b0uibdfG6kzb7NQlB4023Sbic7xkib08vfzP5rIbQ\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1\" data-src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKZ1p51lugxcuknUE4b0uibdfG6kzb7NQlB4023Sbic7xkib08vfzP5rIbQ\/0?wx_fmt=jpeg\" data-type=\"jpeg\" data-ratio=\"0.0683453237410072\" data-w=\"\" \/><\/p>\n<p>\u4e8c\u5341\u56db\u3001iOS \u5f00\u53d1\uff0c\u5de5\u7a0b\u4e2d\u6df7\u5408\u4f7f\u7528 ARC \u548c\u975eARC<\/p>\n<p>Xcode \u9879\u76ee\u4e2d\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 ARC \u548c\u975e ARC \u7684\u6df7\u5408\u6a21\u5f0f\u3002<\/p>\n<p>\u5982\u679c\u4f60\u7684\u9879\u76ee\u4f7f\u7528\u7684\u975e ARC \u6a21\u5f0f\uff0c\u5219\u4e3a ARC \u6a21\u5f0f\u7684\u4ee3\u7801\u6587\u4ef6\u52a0\u5165 -fobjc-arc \u6807\u7b7e\u3002<\/p>\n<p>\u5982\u679c\u4f60\u7684\u9879\u76ee\u4f7f\u7528\u7684\u662f ARC \u6a21\u5f0f\uff0c\u5219\u4e3a\u975e ARC \u6a21\u5f0f\u7684\u4ee3\u7801\u6587\u4ef6\u52a0\u5165 -fno-objc-arc \u6807\u7b7e\u3002<\/p>\n<p>\u6dfb\u52a0\u6807\u7b7e\u7684\u65b9\u6cd5\uff1a<\/p>\n<ul class=\" list-paddingleft-2\">\n<li>\u6253\u5f00\uff1a\u4f60\u7684target -&gt; Build Phases -&gt; Compile Sources.<\/li>\n<li>\u53cc\u51fb\u5bf9\u5e94\u7684 *.m \u6587\u4ef6<\/li>\n<li>\u5728\u5f39\u51fa\u7a97\u53e3\u4e2d\u8f93\u5165\u4e0a\u9762\u63d0\u5230\u7684\u6807\u7b7e -fobjc-arc \/ -fno-objc-arc<\/li>\n<li>\u70b9\u51fb done \u4fdd\u5b58<\/li>\n<\/ul>\n<p>\u4e8c\u5341\u4e94\u3001iOS7 \u4e2d boundingRectWithSize:options:attributes:context:\u8ba1\u7b97\u6587\u672c\u5c3a\u5bf8\u7684\u4f7f\u7528<\/p>\n<p>\u4e4b\u524d\u4f7f\u7528\u4e86NSString\u7c7b\u7684sizeWithFont:constrainedToSize:lineBreakMode:\u65b9\u6cd5\uff0c\u4f46\u662f\u8be5\u65b9\u6cd5\u5df2\u7ecf\u88abiOS7 Deprecated\u4e86\uff0c\u800ciOS7\u65b0\u51fa\u4e86\u4e00\u4e2aboudingRectWithSize:options:attributes:context\u65b9\u6cd5\u6765\u4ee3\u66ff\u3002<\/p>\n<p>\u800c\u5177\u4f53\u600e\u4e48\u4f7f\u7528\u5462\uff0c\u5c24\u5176\u90a3\u4e2aattribute<\/p>\n<blockquote><p><span class=\"crayon-e \">NSDictionary *<\/span><span class=\"crayon-v\">attribute<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">@{<\/span><span class=\"crayon-v\">NSFontAttributeName<\/span><span class=\"crayon-o\">: <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">UIFont <\/span><span class=\"crayon-v\">systemFontOfSize<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">13<\/span><span class=\"crayon-sy\">]};<\/span><\/p>\n<p><span class=\"crayon-e\">CGSize <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[@<\/span><span class=\"crayon-s\">&#8220;\u76f8\u5173NSString&#8221;<\/span> <span class=\"crayon-v\">boundingRectWithSize<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">CGSizeMake<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">100<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-v\">options<\/span><span class=\"crayon-o\">: <\/span><span class=\"crayon-v\">NSStringDrawingTruncatesLastVisibleLine<\/span><span class=\"crayon-h\"> | <\/span><span class=\"crayon-v\">NSStringDrawingUsesLineFragmentOrigin<\/span><span class=\"crayon-h\"> | <\/span><span class=\"crayon-e\">NSStringDrawingUsesFontLeading <\/span><span class=\"crayon-v\">attributes<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">attribute <\/span><span class=\"crayon-v\">context<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">nil<\/span><span class=\"crayon-sy\">].<\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-sy\">;<\/span><\/p><\/blockquote>\n<p>\u4e8c\u5341\u516d\u3001NSDate\u4f7f\u7528 \u6ce8\u610f<\/p>\n<p>NSDate \u5728\u4fdd\u5b58\u6570\u636e\uff0c\u4f20\u8f93\u6570\u636e\u4e2d\uff0c\u4e00\u822c\u6700\u597d\u4f7f\u7528UTC\u65f6\u95f4\u3002<\/p>\n<p>\u5728\u663e\u793a\u5230\u754c\u9762\u7ed9\u7528\u6237\u770b\u7684\u65f6\u5019\uff0c\u9700\u8981\u8f6c\u6362\u4e3a\u672c\u5730\u65f6\u95f4\u3002<\/p>\n<p>\u4e8c\u5341\u4e03\u3001\u5728UIViewController\u4e2dproperty\u7684\u4e00\u4e2aUIViewController\u7684Present\u95ee\u9898<\/p>\n<p>\u5982\u679c\u5728\u4e00\u4e2aUIViewController A\u4e2d\u6709\u4e00\u4e2aproperty\u5c5e\u6027\u4e3aUIViewController B\uff0c\u5b9e\u4f8b\u5316\u540e\uff0c\u5c06BVC.view \u6dfb\u52a0\u5230\u4e3bUIViewController A.view\u4e0a\uff0c\u5982\u679c\u5728viewB\u4e0a\u8fdb\u884c &#8211; (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0);\u7684\u64cd\u4f5c\u5c06\u4f1a\u51fa\u73b0\uff0c\u201c Presenting view controllers on detached view controllers is discouraged \u201d \u7684\u95ee\u9898\u3002<\/p>\n<p>\u4ee5\u4e3aBVC\u5df2\u7ecfpresent\u5230AVC\u4e2d\u4e86\uff0c\u6240\u4ee5\u518d\u4e00\u6b21\u8fdb\u884c\u4f1a\u51fa\u73b0\u9519\u8bef\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528<\/p>\n<blockquote><p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">view<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">window<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">rootViewController <\/span><span class=\"crayon-v\">presentViewController<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">imagePicker<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">animated<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">YES<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">completion<\/span><span class=\"crayon-o\">:^<\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;Finished&#8221;<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}];<\/span><\/p><\/blockquote>\n<p>\u6765\u89e3\u51b3\u3002<\/p>\n<p>\u4e8c\u5341\u516b\u3001UITableViewCell indentationLevel \u4f7f\u7528<\/p>\n<p>UITableViewCell \u5c5e\u6027 NSInteger indentationLevel \u7684\u4f7f\u7528\uff0c \u5bf9cell\u8bbe\u7f6e indentationLevel\u7684\u503c\uff0c\u53ef\u4ee5\u5c06cell \u5206\u7ea7\u522b\u3002<\/p>\n<p>\u8fd8\u6709 CGFloat indentationWidth; \u5c5e\u6027\uff0c\u8bbe\u7f6e\u7f29\u8fdb\u7684\u5bbd\u5ea6\u3002<\/p>\n<p>\u603b\u7f29\u8fdb\u7684\u5bbd\u5ea6: indentationLevel * indentationWidth<\/p>\n<p>\u4e8c\u5341\u4e5d\u3001ActivityViewController \u4f7f\u7528AirDrop\u5206\u4eab<\/p>\n<p>\u4f7f\u7528AirDrop \u8fdb\u884c\u5206\u4eab\uff1a<\/p>\n<blockquote><p><span class=\"crayon-e \">NSArray *<\/span><span class=\"crayon-t\">array<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">@[@<\/span><span class=\"crayon-s\">&#8220;test1&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">@<\/span><span class=\"crayon-s\">&#8220;test2&#8221;<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"crayon-e \">UIActivityViewController *<\/span><span class=\"crayon-v\">activityVC<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">UIActivityViewController <\/span><span class=\"crayon-v\">alloc<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">initWithActivityItems<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-t\">array<\/span> <span class=\"crayon-v\">applicationActivities<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">nil<\/span><span class=\"crayon-sy\">];<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"crayon-sy\">[<\/span><span class=\"crayon-r\">self<\/span> <span class=\"crayon-v\">presentViewController<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">activityVC <\/span><span class=\"crayon-v\">animated<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-e\">YES<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">completion<\/span><span class=\"crayon-o\">:^<\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">NSLog<\/span><span class=\"crayon-sy\">(@<\/span><span class=\"crayon-s\">&#8220;Air&#8221;<\/span><span class=\"crayon-sy\">);<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">}];<\/span><\/p><\/blockquote>\n<p>\u5c31\u53ef\u4ee5\u5f39\u51fa\u754c\u9762\uff1a<\/p>\n<p><img decoding=\"async\" class=\"\" src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKuhpF5EMfexQSvwhia2yzmxiaXR0Eia3kOTGXSNnVorKoBrExLTeKyHZzA\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1\" data-src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKuhpF5EMfexQSvwhia2yzmxiaXR0Eia3kOTGXSNnVorKoBrExLTeKyHZzA\/0?wx_fmt=png\" data-type=\"png\" data-ratio=\"1.7787769784172662\" data-w=\"\" \/><\/p>\n<p>\u4e09\u5341\u3001\u83b7\u53d6CGRect\u7684height<\/p>\n<p>\u83b7\u53d6CGRect\u7684height\uff0c \u9664\u4e86 self.createNewMessageTableView.frame.size.height \u8fd9\u6837\u8fdb\u884c\u70b9\u8bed\u6cd5\u83b7\u53d6\u3002<\/p>\n<p>\u8fd8\u53ef\u4ee5\u4f7f\u7528CGRectGetHeight(self.createNewMessageTableView.frame) \u8fdb\u884c\u76f4\u63a5\u83b7\u53d6\u3002<\/p>\n<p>\u9664\u4e86\u8fd9\u4e2a\u65b9\u6cd5\u8fd8\u6709 func CGRectGetWidth(rect: CGRect) -&gt; CGFloat<\/p>\n<p>\u7b49\u7b49\u7b80\u5355\u5730\u65b9\u6cd5<\/p>\n<blockquote><p><span class=\"crayon-e\">func CGRectGetMinX<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rect<\/span><span class=\"crayon-o\">: <\/span><span class=\"crayon-v\">CGRect<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> -&gt; <\/span><span class=\"crayon-e\">CGFloat<\/span><\/p>\n<p><span class=\"crayon-e\">func CGRectGetMidX<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rect<\/span><span class=\"crayon-o\">: <\/span><span class=\"crayon-v\">CGRect<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> -&gt; <\/span><span class=\"crayon-e\">CGFloat<\/span><\/p>\n<p><span class=\"crayon-e\">func CGRectGetMaxX<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rect<\/span><span class=\"crayon-o\">: <\/span><span class=\"crayon-v\">CGRect<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> -&gt; <\/span><span class=\"crayon-e\">CGFloat<\/span><\/p>\n<p><span class=\"crayon-e\">func CGRectGetMinY<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">rect<\/span><span class=\"crayon-o\">: <\/span><span class=\"crayon-v\">CGRect<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> -&gt; <\/span><span class=\"crayon-v\">CGFloat<\/span><\/p><\/blockquote>\n<p>\u4e09\u5341\u4e00\u3001\u6253\u5370 %<\/p>\n<blockquote><p><span class=\"crayon-e \">NSString *<\/span><span class=\"crayon-v\">printPercentStr<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">NSString <\/span><span class=\"crayon-v\">stringWithFormat<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-sy\">@<\/span><span class=\"crayon-s\">&#8220;%%&#8221;<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u4e09\u5341\u4e8c\u3001\u5728\u5de5\u7a0b\u4e2d\u67e5\u770b\u662f\u5426\u4f7f\u7528 IDFA<\/p>\n<p>allentekiMac-mini:JiKaTongGit lihuaxie$ grep -r advertisingIdentifier .<\/p>\n<p>grep: .\/ios\/Framework\/AMapSearchKit.framework\/Resources: No such file or directory<\/p>\n<p>Binary file .\/ios\/Framework\/MAMapKit.framework\/MAMapKit matches<\/p>\n<p>Binary file .\/ios\/Framework\/MAMapKit.framework\/Versions\/2.4.1.e00ba6a\/MAMapKit matches<\/p>\n<p>Binary file .\/ios\/Framework\/MAMapKit.framework\/Versions\/Current\/MAMapKit matches<\/p>\n<p>Binary file .\/ios\/JiKaTong.xcodeproj\/project.xcworkspace\/xcuserdata\/lihuaxie.xcuserdatad\/UserInterfaceState.xcuserstate matches<\/p>\n<p>allentekiMac-mini:JiKaTongGit lihuaxie$<\/p>\n<p>\u6253\u5f00\u7ec8\u7aef\uff0c\u5230\u5de5\u7a0b\u76ee\u5f55\u4e2d\uff0c \u8f93\u5165\uff1a<\/p>\n<p>grep -r advertisingIdentifier .<\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u90a3\u4e9b\u6587\u4ef6\u4e2d\u7528\u5230\u4e86IDFA\uff0c\u5982\u679c\u7528\u5230\u4e86\u5c31\u4f1a\u88ab\u663e\u793a\u51fa\u6765\u3002<\/p>\n<p>\u4e09\u5341\u4e09\u3001APP \u5c4f\u853d \u89e6\u53d1\u4e8b\u4ef6<\/p>\n<blockquote><p>\/\/ Disable user interaction when download finishes<\/p>\n<p><span class=\"crayon-sy\">[[<\/span><span class=\"crayon-e\">UIApplication <\/span><span class=\"crayon-v\">sharedApplication<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-v\">beginIgnoringInteractionEvents<\/span><span class=\"crayon-sy\">];<\/span><\/p><\/blockquote>\n<p>\u4e09\u5341\u56db\u3001\u8bbe\u7f6eStatus bar\u989c\u8272<\/p>\n<p>status bar\u7684\u989c\u8272\u8bbe\u7f6e\uff1a<\/p>\n<p>\u5982\u679c\u6ca1\u6709navigation bar\uff0c \u76f4\u63a5\u8bbe\u7f6e \/\/ make status bar background color<\/p>\n<blockquote><p><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">view<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">backgroundColor<\/span><span class=\"crayon-h\"> = <\/span><span class=\"crayon-v\">COLOR_APP_MAIN<\/span><span class=\"crayon-sy\">;<\/span><\/p><\/blockquote>\n<p>\u5982\u679c\u6709navigation bar\uff0c \u5728navigation bar \u6dfb\u52a0\u4e00\u4e2aview\u6765\u8bbe\u7f6e\u989c\u8272\u3002\/\/ status bar color<\/p>\n<blockquote><p>UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, -20, ScreenWidth, 20)];<br \/>\n[view setBackgroundColor:COLOR_APP_MAIN];<\/p>\n<p>[viewController.navigationController.navigationBar addSubview:view];<\/p><\/blockquote>\n<p>\u4e09\u5341\u4e94\u3001NSDictionary \u8f6c NSString<\/p>\n<blockquote><p>\/\/ Start<br \/>\nNSDictionary *parametersDic = [NSDictionary dictionaryWithObjectsAndKeys:<br \/>\nself.providerStr, KEY_LOGIN_PROVIDER,<br \/>\ntoken, KEY_TOKEN,<br \/>\nresponse, KEY_RESPONSE,<br \/>\nnil];<\/p>\n<p>NSData\u00a0<em>jsonData = parametersDic == nil ? nil : [NSJSONSerialization dataWithJSONObject:parametersDic options:0 error:nil];<br \/>\nNSString\u00a0<\/em>requestBody = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];<\/p><\/blockquote>\n<p>\u5c06dictionary \u8f6c\u5316\u4e3a NSData\uff0c data \u8f6c\u5316\u4e3a string .<\/p>\n<p>&nbsp;<\/p>\n<p>\u4e09\u5341\u516d\u3001iOS7 \u4e2dUIButton setImage \u6ca1\u6709\u8d77\u4f5c\u7528<\/p>\n<p>\u5982\u679c\u5728iOS7 \u4e2d\u8fdb\u884c\u8bbe\u7f6eimage \u6ca1\u6709\u751f\u6548\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u90a3\u4e48\u8bf4\u660eUIButton\u7684 enable \u5c5e\u6027\u6ca1\u6709\u751f\u6548\u662fNO\u7684\u3002 **\u9700\u8981\u8bbe\u7f6eenable \u4e3aYES\u3002**<\/p>\n<p>&nbsp;<\/p>\n<p>\u4e09\u5341\u4e03\u3001User-Agent \u5224\u65ad\u8bbe\u5907<\/p>\n<p>UIWebView \u4f1a\u6839\u636eUser-Agent \u7684\u503c\u6765\u5224\u65ad\u9700\u8981\u663e\u793a\u54ea\u4e2a\u754c\u9762\u3002<\/p>\n<p>\u5982\u679c\u9700\u8981\u8bbe\u7f6e\u4e3a\u5168\u5c40\uff0c\u90a3\u4e48\u76f4\u63a5\u5728\u5e94\u7528\u542f\u52a8\u7684\u65f6\u5019\u52a0\u8f7d\u3002<\/p>\n<blockquote><p>(void)appendUserAgent<\/p>\n<p>{<\/p>\n<p>NSString oldAgent = [self.WebView stringByEvaluatingJavaScriptFromString:@&#8221;navigator.userAgent&#8221;];<\/p>\n<p>NSString newAgent = [oldAgent stringByAppendingString:@&#8221;iOS&#8221;];<\/p>\n<p>NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:<\/p>\n<p>newAgent, @&#8221;UserAgent&#8221;, nil];<\/p>\n<p>1<\/p>\n<p>newAgent, @&#8221;UserAgent&#8221;, nil];<\/p>\n<p>[[NSUserDefaults standardUserDefaults] registerDefaults:dic];<\/p>\n<p>}<\/p><\/blockquote>\n<p>@\u201ciOS\u201d \u4e3a\u6dfb\u52a0\u7684\u81ea\u5b9a\u4e49\u3002<\/p>\n<p>\u4e09\u5341\u516b\u3001UIPasteboard \u5c4f\u853dpaste \u9009\u9879<\/p>\n<p>\u5f53UIpasteboard\u7684string \u8bbe\u7f6e\u4e3a@\u201c\u201d \u65f6\uff0c\u90a3\u4e48string\u4f1a\u6210\u4e3anil\u3002 \u5c31\u4e0d\u4f1a\u51fa\u73b0paste\u7684\u9009\u9879\u3002<\/p>\n<p>\u4e09\u5341\u4e5d\u3001class_addMethod \u4f7f\u7528<\/p>\n<p>\u5f53 ARC \u73af\u5883\u4e0b<\/p>\n<p>class_addMethod([self class], @selector(resolveThisMethodDynamically), (IMP) myMethodIMP, \u201cv@:\u201d);<\/p>\n<p>\u4f7f\u7528\u7684\u65f6\u5019@selector \u9700\u8981\u4f7f\u7528super\u7684class\uff0c\u4e0d\u7136\u4f1a\u62a5\u9519\u3002<\/p>\n<p>\u5f53MRC\u73af\u5883\u4e0b<\/p>\n<p>class_addMethod([EmptyClass class], @selector(sayHello2), (IMP)sayHello, \u201cv@:\u201d);<\/p>\n<p>\u53ef\u4ee5\u4efb\u610f\u5b9a\u4e49\u3002\u4f46\u662f\u7cfb\u7edf\u4f1a\u51fa\u73b0\u8b66\u544a\uff0c\u5ffd\u7565\u8b66\u544a\u5c31\u53ef\u4ee5\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6765\u6e90\uff1a\u8774\u8776\u4e4b\u68a6\u5929\u4f7f \u94fe\u63a5\uff1ahttp:\/\/www.jianshu.com\/p\/d333cf6ae4b0 \u5728iOS &hellip; <a href=\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201ciOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09\u201d<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[3,50],"tags":[69,83,78],"translation":{"provider":"WPGlobus","version":"2.12.2","language":"zh","enabled_languages":["en","zh"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"zh":{"title":false,"content":false,"excerpt":false}}},"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09 - \u8f6f\u4ef6\u542f\u793a\u5f55<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blog.softwareclues.com\/zh\/ios\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09 - \u8f6f\u4ef6\u542f\u793a\u5f55\" \/>\n<meta property=\"og:url\" content=\"http:\/\/blog.softwareclues.com\/zh\/ios\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09\" \/>\n<meta property=\"og:site_name\" content=\"\u8f6f\u4ef6\u542f\u793a\u5f55\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-15T04:37:02+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1\" \/>\n<meta name=\"author\" content=\"Editorial Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Editorial Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89\",\"url\":\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89\",\"name\":\"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09 - \u8f6f\u4ef6\u542f\u793a\u5f55\",\"isPartOf\":{\"@id\":\"http:\/\/blog.softwareclues.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#primaryimage\"},\"image\":{\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#primaryimage\"},\"thumbnailUrl\":\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1\",\"datePublished\":\"2016-05-15T04:37:02+00:00\",\"dateModified\":\"2016-05-15T04:37:02+00:00\",\"author\":{\"@id\":\"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82\"},\"breadcrumb\":{\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#primaryimage\",\"url\":\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1\",\"contentUrl\":\"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/blog.softwareclues.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/blog.softwareclues.com\/#website\",\"url\":\"http:\/\/blog.softwareclues.com\/\",\"name\":\"\u8f6f\u4ef6\u542f\u793a\u5f55\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/blog.softwareclues.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82\",\"name\":\"Editorial Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.softwareclues.com\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g\",\"contentUrl\":\"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g\",\"caption\":\"Editorial Team\"},\"url\":\"http:\/\/blog.softwareclues.com\/zh\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09 - \u8f6f\u4ef6\u542f\u793a\u5f55","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/blog.softwareclues.com\/zh\/ios\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09","og_locale":"zh_CN","og_type":"article","og_title":"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09 - \u8f6f\u4ef6\u542f\u793a\u5f55","og_url":"http:\/\/blog.softwareclues.com\/zh\/ios\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09","og_site_name":"\u8f6f\u4ef6\u542f\u793a\u5f55","article_published_time":"2016-05-15T04:37:02+00:00","og_image":[{"url":"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1"}],"author":"Editorial Team","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"Editorial Team","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89","url":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89","name":"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09 - \u8f6f\u4ef6\u542f\u793a\u5f55","isPartOf":{"@id":"http:\/\/blog.softwareclues.com\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#primaryimage"},"image":{"@id":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#primaryimage"},"thumbnailUrl":"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1","datePublished":"2016-05-15T04:37:02+00:00","dateModified":"2016-05-15T04:37:02+00:00","author":{"@id":"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82"},"breadcrumb":{"@id":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#primaryimage","url":"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1","contentUrl":"http:\/\/mmbiz.qpic.cn\/mmbiz\/k0UVxv3BTLIcjf1fLMBrHKAz4OIm43PKo1vwiaMBN9anPq3cOsToDZpb4eL3mRP8BE9xtv5mNMbhEddXcREhRyg\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1"},{"@type":"BreadcrumbList","@id":"http:\/\/blog.softwareclues.com\/zh\/ios%e5%bc%80%e5%8f%91%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93%ef%bc%88%e4%b8%8a%ef%bc%89#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/blog.softwareclues.com\/"},{"@type":"ListItem","position":2,"name":"iOS\u5f00\u53d1\u7ecf\u9a8c\u603b\u7ed3\uff08\u4e0a\uff09"}]},{"@type":"WebSite","@id":"http:\/\/blog.softwareclues.com\/#website","url":"http:\/\/blog.softwareclues.com\/","name":"\u8f6f\u4ef6\u542f\u793a\u5f55","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/blog.softwareclues.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82","name":"Editorial Team","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.softwareclues.com\/#\/schema\/person\/image\/","url":"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g","contentUrl":"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g","caption":"Editorial Team"},"url":"http:\/\/blog.softwareclues.com\/zh\/author\/admin"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paLJfj-67","jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts\/379"}],"collection":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/comments?post=379"}],"version-history":[{"count":2,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts\/379\/revisions"}],"predecessor-version":[{"id":381,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts\/379\/revisions\/381"}],"wp:attachment":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/media?parent=379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/categories?post=379"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/tags?post=379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}