亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

兼容sdk7&iOS7的issue解決小片段總結

2019-11-14 20:14:14
字體:
來源:轉載
供稿:網友

大笑ios7新增加的icon尺寸:

76 x 76:Size for ipad 2 and iPad mini (standard resolution)

120 x 120 :Size for iPhone  and iPod touch (high resolution)

152 x 152: Size for iPad and iPad mini (high resolution)

參考:

http://blog.manbolo.com/2013/08/15/new-metrics-for-ios-7-app-icons

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/IconMatrix.html

 

大笑Launch image

原來做ios5,6的啟動畫面時,如果有status bar,我們會考慮做一張高度少20point的圖片,現在ios7的status bar透明了,所以Launch image需要做成全屏尺寸。

 

大笑在xcode5中同時預覽ios7和ios7以前的ui樣式:

1、打開需要預覽的xib;

2、打開assistant editor;

3、點擊Manual選擇PRe view

     

大笑 

判斷ios7:

C代碼  收藏代碼
  1. #define NLSystemVersionGreaterOrEqualThan(version) ([[[UIDevice currentDevice] systemVersion] floatValue] >= version)  
  2. #define IOS7_OR_LATER NLSystemVersionGreaterOrEqualThan(7.0)  
  3.   
  4. #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1  
  5.         if (IOS7_OR_LATER) {  
  6.            //適配7的代碼,這里是在sdk7,ios7中代碼  
  7.         }  
  8. #endif  
  9. //xcode4.6  支持run ios7  

ps:一個不錯的宏:

java代碼  收藏代碼
  1. #ifndef kCFCoreFoundationVersionNumber_iOS_6_1  
  2. #define kCFCoreFoundationVersionNumber_iOS_6_1 793.00  
  3. #endif  
  4.   
  5. #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1  
  6. #define IF_IOS7_OR_GREATER(...) /  
  7. if (kCFCoreFoundationVersionNumber > kCFCoreFoundationVersionNumber_iOS_6_1) /  
  8. { /  
  9. __VA_ARGS__ /  
  10. }  
  11. #else  
  12. #define IF_IOS7_OR_GREATER(...)   
  13. #endif  

 

判斷SDK7:

 

Java代碼  收藏代碼
  1. //前提至少運行在xcode4.6有sdk6.1       
  2.   #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1  
  3.        //..........  
  4.        #endif  

 判斷運行時方法:

 

- (BOOL)respondsToSelector:(SEL)aSelector;

例如:

Java代碼  收藏代碼
  1. if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])  
  2. {  
  3.     self.edgesForExtendedLayout = UIRectEdgeNone;  
  4. }  

 

 大笑ios7中UITableView的cell separator默認不是從最左邊開始

下面兼容低于ios7的版本:

Java代碼  收藏代碼
  1. #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000  
  2.         if (IOS7_OR_LATER) {  
  3.             [tabelView setSeparatorInset:UIEdgeInsetsZero];//  
  4.         }  
  5. #endif  

 

大笑我這是自定義的xib的cell:本來是透明的uitableview背景,到ios7變成白色(因為背景是白色):

Java代碼  收藏代碼
  1. 增加:  
  2.  cell.backgroundColor = [UIColor clearColor];//我是由于這層擋住了,大家注意下每一層顏色  

在之前的版本中UITableViewCell的backgroundColor是透明背景的,但是在iOS7中是默認白色背景,如果在TableView后面加入背景的應用要注意了,在創建UITableViewCell的時候把backgroundColor設置為[UIColor clearColor]

 

大笑UILabel不一致的background

對于UILabel,在iOS 7中它的background顏色默認是clearColor,而在iOS 6中默認的是白色。所以,我們最好在代碼中對label的background顏色進行明確的設置:

Java代碼  收藏代碼
  1. view.backgroundColor = [UIColor clearColor];  

 

大笑我這是自定義的xib的cell:用xib自定義的cell上的按鈕不能響應點擊事件,一種是把按鈕放到cell的contentView上,或者是設置[cell.contentView setUserInteractionEnabled: NO];來屏蔽cell上的點擊事件

 

大笑

如果你最近在做對iOS7的兼容時,發現你的table view cell顯示不正常。這很可能是你以前的用法不對。Table view cell的自定義內容應該作為 cell.contentView的子view添加到cell中,如果你直接用 [cell addSubView:]方法而不是[cell.contentView addSubView:]方法添加子元素,那么就可能在iOS7下出來異常的表現。主要原因是iOS7的Table view cell內部實現有了部分變化。

Java代碼  收藏代碼
  1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  2.   
  3. {  
  4.   
  5. UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:@"cellIdentifier"];  
  6.   
  7. UIView * subview = [[XXView alloc] init];  
  8.   
  9. subview.userInteractionEnabled = NO;// 不設為NO會屏蔽cell的點擊事件  
  10.   
  11. subview.backgroundColor = [UIColor clearColor];// 設為透明從而使得cell.backgroundColor有效.  
  12.   
  13. subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;  
  14.   
  15. [cell.contentView addSubview:subview];// cell.contentView是個readonly屬性,所以別想著替換contentView了.  
  16.   
  17. return cell;  
  18.   
  19. }  

 

 

大笑在ios5,ios6中正常執行的動畫,但到ios7中不定時的會消失。

解決方案:在可能消失的地方加上“[UIView setAnimationsEnabled:YES]”,比如action方法,viewWillappear方法等。

網上暫時還沒有與這個有關的問題,與這個類似:http://stackoverflow.com/questions/18880584/ios-7-animation-block-not-being-called

 

大笑

視圖控制器接口wantsFullScreenLayout已作廢。如果你像以前那樣地指定wantsFullScreenLayout = NO,iOS 7中視圖控制器會在將其內容顯示到一個意外的屏幕位置。

 

大笑NSString 繪制

ios7 下使用

- (void)drawAtPoint:(CGPoint)point withAttributes:(NSDictionary *)attrs

進行繪制,需要定義attributes,對樣式進行定義。

例如attributes是@{NSFontAttributeName:[UIFontsystemFontOfSize:8], NSStrokeColorAttributeName:[[UIColorgreenColor] colorWithAlphaComponent:0.5]},但這個屬性會影響上下文。

ios7 之前使用 

- (CGSize)drawAtPoint:(CGPoint)point withFont:(UIFont *)font  繪制。

 

大笑navigation controller容器中布局到ios7中往上偏移了64px

iOS6中默認的布局將從navigation bar的底部開始,但到了iOS7中默認布局從navigation bar的頂部開始,這就是為什么所有的UI元素都往上漂移了。因為在iOS7中,蘋果引入了一個新的屬性,叫做[UIViewController setEdgesForExtendedLayout:],它的默認值為UIRectEdgeAll,使用edgesForExtendedLayout指定視圖的哪條邊需要擴展,不用理會操作欄的透明度。所以這種情況快速修復的方法是:在-(void)viewDidLoad中添加如下一行代碼:

Java代碼  收藏代碼
  1. self.edgesForExtendedLayout = UIRectEdgeNone;  

 

大笑extendedLayoutIncludesOpaqueBars

關于這個屬性的測試版本中默認值是YES,正式版本是NO!

如果你使用了不透明的navigation bar,設置edgesForExtendedLayout 還是默認值UIRectEdgeAll,你又想整個view全屏(navigation bar下面的內容網上漂移64px) extendedLayoutIncludesOpaqueBars 的值設置為YES。

例如:

Java代碼  收藏代碼
  1. 在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中給uinavigationbar設置背景圖片使之不透明:  
  2.     CGSize imageSize = CGSizeMake(1, 1);  
  3.     UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0);  
  4.     [[UIColor greenColor] set];  
  5.     UIBezierPath * path = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];  
  6.     [path fill];  
  7.     UIImage *image = UIGraphicsGetImageFromCurrentImageContext ();  
  8.     UIGraphicsEndImageContext();  
  9.       
  10.     [[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];  

 然后在需要全屏的UIViewController中設置:

Java代碼  收藏代碼
  1. self.extendedLayoutIncludesOpaqueBars = YES;  

 

大笑隱藏狀態條

原來在ios6中是:

Java代碼  收藏代碼
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     // Override point for customization after application launch.  
  4.     [[UIApplication sharedApplication] setStatusBarHidden:YES];  
  5.     return YES;  
  6. }  

 現在在ios7中無效了。

 

快速解決:

在項目plist文件中修改為:

View controller-based status bar appearance 的值為NO。

 

但是我認為這個快速解決是沒有按照蘋果的思路來解決的,而且會有些問題,比如,當你在某個界面隱藏了status bar,退回到上一個界面時,status bar仍然是隱藏的。 首先,蘋果把View controller-based status bar appearance默認的值設為YES,是有他的道理的,新系統下,蘋果希望我們的viewcontroller去控制status bar,也就是說,我們大多數的界面應該是統一的,偶爾一些viewcontroller需要status bar特殊控制的,完全交給當前的viewcontroller來做。那么推薦解決方案:

保持View controller-based status bar appearance 的默認值為YES,然后在ViewController中重寫prefersstatusBarHidden方法:

 

Java代碼  收藏代碼
  1. - (BOOL)prefersStatusBarHidden  
  2. {  
  3.     return YES;  
  4. }  
大笑
升級到ios7 ,默認狀態欄是透明的,就是狀態欄只有文字沒有背景?,F在的情況是,默認是會疊合的,開發需要從20px像素以下開始布局頁面元素才能避免。
 

大笑 狀態欄樣式修改:

在在UIViewController或子類中實現以下兩個方法:

Java代碼  收藏代碼
  1. - (BOOL)prefersStatusBarHidden  
  2. {  
  3.     return YES;  
  4. }  
  5. - (UIStatusBarStyle)preferredStatusBarStyle{  
  6.     return UIStatusBarStyleLightContent;  
  7. }  

 在需要刷新狀態欄樣式的時候,調用

Java代碼  收藏代碼
  1. - (void)setNeedsStatusBarAppearanceUpdate   

 

 

 大笑在iOS7 UINavigationController中側滑手勢返回

假如你自定義leftBarButtonItem,返回手勢會失效,需要實現:

Java代碼  收藏代碼
  1. self.navigationController.interactivePopGestureRecognizer.delegate = self;  

 假如你沒有自定義leftBarButtonItem或其他需求而不需要手勢,必須實現:

 

Java代碼  收藏代碼
  1. self.navigationController.interactivePopGestureRecognizer.enabled = NO;  

 

 大笑

在iOS 6 中,tintColor 可以用來給導航欄的背景著色、tab 欄、工具欄、搜索欄、搜索欄的 范圍選擇欄著色。而在iOS 7 中,給背景著色只需要使用barTintColor 屬性就可以了,所以iOS7中barTintColor 取代原有的 tintColor, 原有的tintColor只修改對應bar上的按鈕顏色。

 

大笑Navigation Bar

  也就是說如果設置Navigation Bar的圖片,并且這個圖片高度保持在44point(88px),那么IOS5,6,7的效果是一致的。 

參考:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/uid/TP40013174-CH8-SW1

 

大笑 UIBarButtonItem

在iOS7中自定義的 UIBarButtonItem 所有的item向中間偏移了,如果需要適配ios6的風格需要修改

簡單處理:

 

Java代碼  收藏代碼
  1. UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]  
  2.                                        initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace  
  3.                                   target:nil action:nil];  
  4. negativeSpacer.width = -16;// it was -6 in iOS 6  
  5. [self.navigationItem setLeftBarButtonItems:[NSArray arrayWithObjects:negativeSpacer, requriedButton/*this will be the button which u actually need*/, nil] animated:NO];  
 如果想不修改源代碼,例如setLeftBarButtonItem等方法,可以在category中覆蓋:
Java代碼  收藏代碼
  1. #import "UINavigationItem+PtHelper.h"  
  2.   
  3. @implementation UINavigationItem (PtHelper)  
  4.   
  5. #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1  
  6. - (void)setLeftBarButtonItem:(UIBarButtonItem *)_leftBarButtonItem  
  7. {  
  8.     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)  
  9.     {  
  10.         UIBarButtonItem *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];  
  11.         negativeSeperator.width = -16;  
  12.           
  13.         if (_leftBarButtonItem)  
  14.         {  
  15.             [self setLeftBarButtonItems:@[negativeSeperator, _leftBarButtonItem]];  
  16.         }  
  17.         else  
  18.         {  
  19.             [self setLeftBarButtonItems:@[negativeSeperator]];  
  20.         }  
  21.         [negativeSeperator release];  
  22.     }  
  23.     else  
  24.     {  
  25.         [self setLeftBarButtonItem:_leftBarButtonItem animated:NO];  
  26.     }  
  27. }  
  28.   
  29. - (void)setRightBarButtonItem:(UIBarButtonItem *)_rightBarButtonItem  
  30. {  
  31.     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)  
  32.     {  
  33.         UIBarButtonItem *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];  
  34.         negativeSeperator.width = -10;  
  35.           
  36.         if (_rightBarButtonItem)  
  37.         {  
  38.             [self setRightBarButtonItems:@[negativeSeperator, _rightBarButtonItem]];  
  39.         }  
  40.         else  
  41.         {  
  42.             [self setRightBarButtonItems:@[negativeSeperator]];  
  43.         }  
  44.         [negativeSeperator release];  
  45.     }  
  46.     else  
  47.     {  
  48.         [self setRightBarButtonItem:_rightBarButtonItem animated:NO];  
  49.     }  
  50. }  
  51.   
  52. #endif  
  53.    
  54. @end  
 

 大笑

 

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode  在ios7中過期

 

在ios7中使用:

 

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context

例如:

C代碼  收藏代碼
  1. CGSize size = CGSizeMake(screenSize.width - self.horizontalMargin * 4.f, 1000.f);  
  2.        if(IOS7_OR_LATER){  
  3.            CGRect textRect = [text boundingRectWithSize:size options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName:font} context:nil];  
  4.            self.contentWidth = self.contentWidth!=0.f?self.contentWidth:textRect.size.width;  
  5.            self.contentHeight = self.contentHeight!=0.f?self.contentHeight:textRect.size.height;  
  6.        }else{  
  7.            CGSize  textSize = [text sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];  
  8.            self.contentWidth = self.contentWidth!=0.f?self.contentWidth:textSize.width;  
  9.            self.contentHeight = self.contentHeight!=0.f?self.contentHeight:textSize.height;  
  10.        }  

 https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/Reference/Reference.html#//apple_ref/occ/instm/NSString/boundingRectWithSize:options:attributes:context:

 

 大笑

 ios7新增的屬性sectionIndexBackgroundColor,在索引沒有被觸摸時默認是白色。

Java代碼  收藏代碼
  1.     if (IS_IOS_7) {  
  2.         self.playersTableView.sectionIndexBackgroundColor = [UIColor clearColor];  
  3. //        self.playersTableView.sectionIndexTrackingBackgroundColor = [UIColor clearColor];  
  4.     }  

 

大笑在ios7 ipad中tabbar高度不是49

In iOS 7, a tab bar on iPad has a height of 56 points.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲福利在线看| 性欧美长视频免费观看不卡| 欧美激情视频一区二区三区不卡| 91免费高清视频| 黄色成人av网| 国产精品夜色7777狼人| 日韩福利在线播放| 欧美一区视频在线| 久久精品国产亚洲一区二区| 亚洲成人免费在线视频| 91豆花精品一区| 亚洲女同精品视频| 欧美在线免费看| 国产精品亚洲精品| 亚洲的天堂在线中文字幕| 国产在线播放91| 在线精品高清中文字幕| 国产美女直播视频一区| 91精品国产高清久久久久久91| 91久久国产精品| 九九热这里只有精品6| 成人伊人精品色xxxx视频| 97色在线观看| 久久男人资源视频| 国产日韩欧美在线观看| 日韩精品一区二区三区第95| 91免费电影网站| 色99之美女主播在线视频| 尤物九九久久国产精品的分类| 色悠悠国产精品| 精品国产精品自拍| 亚洲人av在线影院| 免费91麻豆精品国产自产在线观看| 69av在线播放| 亚洲午夜未删减在线观看| 蜜臀久久99精品久久久无需会员| 国产精品一区二区电影| 日韩电影在线观看中文字幕| 亚洲精品一区二区久| 热久久免费国产视频| 国产精品国产三级国产专播精品人| 色综合伊人色综合网| 日韩电影中文字幕av| 欧美午夜xxx| 久久精品一区中文字幕| 成人高清视频观看www| 日韩女优人人人人射在线视频| 国产精品久在线观看| 粉嫩老牛aⅴ一区二区三区| 97人洗澡人人免费公开视频碰碰碰| 亚洲免费视频在线观看| 久国内精品在线| 亚洲精品中文字幕av| www.美女亚洲精品| 亚州精品天堂中文字幕| 97在线精品视频| 91av在线不卡| 欧美大全免费观看电视剧大泉洋| 国产精品成人va在线观看| 日日狠狠久久偷偷四色综合免费| 欧美日韩中文字幕综合视频| 欧美大片大片在线播放| 国产精品福利久久久| 亚洲综合中文字幕在线观看| 姬川优奈aav一区二区| 欧美一级视频免费在线观看| 亚洲国产日韩一区| 精品在线小视频| 久久99精品国产99久久6尤物| 91精品国产91久久久久久久久| 欧美成人精品不卡视频在线观看| 欧美在线日韩在线| 亚洲精品成人久久| 久久精品人人做人人爽| 成人观看高清在线观看免费| 久久国产精品久久国产精品| 在线观看视频亚洲| 中文字幕日韩精品在线| 国产精品美女www| 久久久久久有精品国产| 日本欧美在线视频| 亚洲欧美色婷婷| 91精品视频在线播放| 精品综合久久久久久97| 亚洲成人教育av| 狠狠久久五月精品中文字幕| 午夜精品一区二区三区在线视| 2021久久精品国产99国产精品| 97在线免费观看| 国产精品久久久一区| 久久中国妇女中文字幕| 国产va免费精品高清在线| 91精品国产一区| 欧美极品美女视频网站在线观看免费| 亚州成人av在线| 57pao精品| 日韩精品视频在线免费观看| 中文字幕av一区中文字幕天堂| 亚洲高清久久久久久| 亚洲精品视频在线观看视频| 日韩欧美国产一区二区| 亚洲图片欧美日产| 97国产精品人人爽人人做| 亚洲女在线观看| 国产成人精品视频在线| 亚洲国内精品视频| 色偷偷av一区二区三区乱| 欧美激情2020午夜免费观看| 欧美综合国产精品久久丁香| 国产91在线播放| 欧美成年人视频网站欧美| 6080yy精品一区二区三区| 日韩欧美在线视频| 日韩精品免费在线| 国产精品女人久久久久久| 日韩成人av网址| 日韩欧美国产网站| 国产一区二区成人| 久久久亚洲影院你懂的| 26uuu国产精品视频| 久久亚洲国产精品成人av秋霞| 国产精品永久免费观看| 久久久久久久久中文字幕| 青青久久av北条麻妃海外网| 亚洲第一精品夜夜躁人人爽| 国产99在线|中文| 欧美精品久久久久久久久| 在线观看久久av| 欧美久久久精品| 在线视频日本亚洲性| 国产精品久久9| 国产精品美女www爽爽爽视频| 宅男66日本亚洲欧美视频| 97欧美精品一区二区三区| 日韩中文字幕网站| 亚洲男人天堂2019| 欧美成人精品xxx| 在线成人激情黄色| 久久久亚洲国产天美传媒修理工| 亚洲最大av网站| 国产精品一久久香蕉国产线看观看| 欧美视频免费在线观看| 中文字幕日韩精品在线观看| 91美女片黄在线观看游戏| 91香蕉国产在线观看| 777国产偷窥盗摄精品视频| 日韩成人在线免费观看| 不卡毛片在线看| 日韩中文字幕国产精品| 国产精品高清在线观看| 国产不卡在线观看| www.精品av.com| 91九色国产视频| 琪琪第一精品导航| 亚洲第一男人av| 欧美影院成年免费版| 狠狠综合久久av一区二区小说| 在线观看精品自拍私拍| 成人女保姆的销魂服务| 久青草国产97香蕉在线视频| 精品国产乱码久久久久久虫虫漫画| 欧美日韩亚洲视频一区| 久久影视电视剧免费网站清宫辞电视| 亚洲国产精品成人精品|