双葉幼稚園 A Layman's Repository

iOS 7 SDK Mirgration Cheat Sheet

最近搞了一点 iOS 7 SDK 的适配,来几个作弊条

  1. UITableViewCell 默认有了一个白色背景,我们来去掉它

    self.backgroundColor = [UIColor clearColor];
    
  2. 原本 UITableView 是它的 contentViewsuperView,现在中间多了一个 UITableViewCellScrollView,而且这个 UITableViewCellScrollView 默认 clipsToBounds = YES。这就导致很多(没有正确编写的) UITableViewCell 被截断。先来个 quick fix:

    self.contentView.superView.clipsToBounds = YES;
    

不过这仅仅是个 quick fix,真正想修正请正确计算 frame,不要偷懒!

  1. UISearchBar 多了一个 searchBarStyle 属性,把它设置成 UISearchBarStyleMinimal 然后自己设置背景色:

    if ([_searchBar respondsToSelector:@selector(setSearchBarStyle:)]) {
        _searchBar.searchBarStyle = UISearchBarStyleMinimal;
        _searchBar.backgroundColor = [UIColor whiteColor];
    }
    
  2. UISearchDisplayController 带出来的显示搜索结果的 table view 没有背景,会跟后面的 view 叠起来:

    - (void)searchDisplayController:(UISearchDisplayController *)controller
       didLoadSearchResultsTableView:(UITableView *)tableView {
        tableView.backgroundColor = [UIColor whiteColor];
    }
    
  3. 没有 UINavigationController 的视图中,处理 status bar 的方法:

    self.wantsFullScreenLayout = YES;
    

之后把里面的 view 都下移 20 points。

  1. 说实话这个我真没用到:

    if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
    }
    

因为我用了

```objc
self.navigationBar.translucent = NO;
```

Apple 对许多属性的默认值做了修改,这应该是有它的意义的,大概是指导设计?我还没有想清楚。

修改的过程中发现除了 Apple 改的那些默认值以外大部分都是历史问题,出来混的,总是要还的。