適配iOS7之—UITableView和UISearchBar


iOS7中,如果用UITableViewStyleGrouped的話,里面的cell會比原來的拉長了,這樣做應該是為了統一和UITableViewStylePlain風格時cell的大小一致,所以改用UITableViewStylePlain后,就沒問題了,而且在iOS7中,使用UITableViewStyleGrouped風格時,上面會出現headView,大概占了35個像素,使用UITableViewStyleGrouped風格的朋友們注意了,如下圖為使用UITableViewStyleGrouped時的差異:屏幕快照 2013-09-27 下午10.27.49

圖1-1

還有就是iOS7下的UITableView增加了一個UITableViewWrapperView子視圖,UITableViewCell變成了UITableViewWrapperView的子視圖,而在iOS6中,UITableViewCell是UITableView的子視圖。

用代碼表現出來就是:

1
2
3
UITableView *tableView = (UITableView *)cell.superview.superview; //in iOS7
 
UITableView *tableView = (UITableView *)cell.superview; //in iOS6

如果之前定制cell的時候,用下面代碼取tableView的需要做適配了。

1
UITableView *tableView = (UITableView *) self .superview;

還有就是現在可以直接設置UITableView的背景顏色了:

1
_loginTable.backgroundColor = [UIColor redColor];

另一個問題就是我使用UISearchBar的時候,Apple在iOS7中也做了調整。如下圖:

屏幕快照 2013-09-27 下午11.22.03

圖1-2

相信很多人在使用UISearchBar的時候,都比較喜歡上面的那種去了背景色的樣子,在iOS6中我是使用下面這種方式去除背景色:

1
2
3
4
5
6
7
8
9
10
11
12
//for iOS6
for (UIView *subview in  self .search.subviews) {
 
     if ([subview isKindOfClass: NSClassFromString ( @"UISearchBarBackground" )]) {
 
         [subview removeFromSuperview];
 
         break ;
 
     }
 
}

而今天突然發現,納尼,在iOS7中,搜索框消失了,用小伙伴的方法看了一下,原來視圖樹改變了。如下圖:

uisearchbar

在iOS7中,UISearchBar的子視圖變成一個UIView,所以原來的方法不管用了,但是看了一下文檔,在iOS7中新增了一個barTintColor的屬性,我們可以設置barTintColor為clearColor,便得到圖1-2中的效果。

1
2
3
4
5
6
7
//for iOS 7
 
if ([ self .search respondsToSelector: @selector (barTintColor)]) {
 
[ self .search setBarTintColor:[UIColor clearColor]];
 
}

至此,目前我在適配iOS7的時候,就遇到這兩個問題,寫出來,分享給大家。

今天看到一個笑話,快笑得不能自已了:

為什么練葵花寶典一定要先自宮?

網友答復:練成神功后,絕對會屌爆了,所以要先防患於未然。O(∩_∩)O~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM