解决UITableView在iOS7中UINavigationController里的顶部留白问题
解决UITableView在iOS7中UINavigationController里的顶部留白问题

出现问题时候的截图:

源码:
用到的类:
UIViewController+TitleTextAttributes.h 与 UIViewController+TitleTextAttributes.m
//
// UIViewController+TitleTextAttributes.h
// YouXianMing
//
// Created by YouXianMing on 14-9-20.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import <UIKit/UIKit.h>
#import "NCTitleAttribute.h" @interface UIViewController (TitleTextAttributes) /**
* 设置当前控制器的标题属性
*
* @param attribute 属性对象
*/
- (void)titleTextAttributes:(NCTitleAttribute *)attribute; @end
//
// UIViewController+TitleTextAttributes.m
// YouXianMing
//
// Created by YouXianMing on 14-9-20.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "UIViewController+TitleTextAttributes.h" @implementation UIViewController (TitleTextAttributes) #pragma mark - public
- (void)titleTextAttributes:(NCTitleAttribute *)attribute
{
[self controller:self
titleTextAttributes:[attribute transformToDictionary]];
} #pragma mark - private
- (void)controller:(UIViewController *)controller titleTextAttributes:(NSDictionary *)dictionary
{
if ([controller isKindOfClass:[UIViewController class]]) {
[controller.navigationController.navigationBar setTitleTextAttributes:dictionary];
}
} @end
NCTitleAttribute.h 与 NCTitleAttribute.m
//
// NCTitleAttribute.h
// YouXianMing
//
// Created by YouXianMing on 14-9-20.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import <Foundation/Foundation.h> @interface NCTitleAttribute : NSObject @property (nonatomic, strong) UIColor *titleColor; // 标题颜色
@property (nonatomic, strong) UIFont *titleFont; // 标题字体 @property (nonatomic, strong) UIColor *shadowColor; // 阴影颜色
@property (nonatomic, assign) CGSize shadowOffset; // 阴影偏移量 // 将参数转换为字典
- (NSDictionary *)transformToDictionary; @end
//
// NCTitleAttribute.m
// YouXianMing
//
// Created by YouXianMing on 14-9-20.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "NCTitleAttribute.h" @implementation NCTitleAttribute - (NSDictionary *)transformToDictionary
{
NSMutableDictionary *dic = [NSMutableDictionary new]; if (_titleColor)
{
[dic setObject:_titleColor forKey:NSForegroundColorAttributeName];
}
else
{
[dic setObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName];
} if (_titleFont)
{
[dic setObject:_titleFont forKey:NSFontAttributeName];
} if (_shadowOffset.height && _shadowOffset.width)
{
NSShadow *shadow = [NSShadow new]; shadow.shadowColor = _shadowColor;
shadow.shadowOffset = _shadowOffset; [dic setObject:shadow forKey:NSShadowAttributeName];
} return dic;
} @end
控制器源码:
//
// ViewController.m
// UIRectEdgeNone
//
// Created by YouXianMing on 14/10/29.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "ViewController.h"
#import "UIViewController+TitleTextAttributes.h"
#import "NCTitleAttribute.h"
#import "WxHxD.h" @interface ViewController ()<UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) UITableView *tableView;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; // 初始化标题
[self initTitle]; // 背景view
UIView *backView = [[UIView alloc] initWithFrame:\
CGRectMake(, [WxHxD statusBarAndNavigationBarHeight],
[WxHxD screenWidth],
[WxHxD screenHeight] - [WxHxD statusBarAndNavigationBarHeight])];
backView.layer.borderWidth = .f;
backView.layer.borderColor = [UIColor redColor].CGColor;
[self.view addSubview:backView]; // tableView
_tableView = [[UITableView alloc] initWithFrame:backView.bounds
style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
[backView addSubview:_tableView]; } - (void)initTitle {
self.title = @"YouXianMing";
NCTitleAttribute *NCTitle = [NCTitleAttribute new];
NCTitle.titleColor = [UIColor redColor];
NCTitle.titleFont = [UIFont fontWithName:@"HelveticaNeue-Thin" size:.f];
[self titleTextAttributes:NCTitle];
} #pragma mark - 代理
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return ;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *reusedFlag = @"YouXianMing"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reusedFlag];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:reusedFlag];
} cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Thin" size:.f];
cell.textLabel.text = @"No Zuo No Die";
cell.textLabel.textColor = [UIColor grayColor]; return cell;
} @end
如何解决呢?很简单:
添加以下代码:
// 让边缘留白为空
float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0) {
self.edgesForExtendedLayout = UIRectEdgeNone;
}
效果:

注意:此种问题只有在iOS7以上才会出现
解决UITableView在iOS7中UINavigationController里的顶部留白问题的更多相关文章
- UITableView中cell里的UITextField不被弹出键盘挡住
UITableView中cell里的UITextField不被弹出键盘挡住 本人视频教程系类 iOS中CALayer的使用 效果如下: 源码: EditCell.h 与 EditCell.m // ...
- WWDC 2013 Session笔记 - iOS7中的多任务
这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览.本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作.如果您觉得本站对您能有帮助, ...
- ios7中的多任务
转自:http://onevcat.com/2013/08/ios7-background-multitask/ WWDC 2013 Session笔记 - iOS7中的多任务 iOS7的后台多任务特 ...
- [ios-必看] WWDC 2013 Session笔记 - iOS7中的多任务【转】
感谢:http://onevcat.com/2013/08/ios7-background-multitask/ http://www.objc.io/issue-5/multitasking.htm ...
- UITableView使用过程中可能遇到的问题
前言:记录一些UITableView使用过程中可能遇到的问题 环境:Xcode9 解决UITableViewStyleGrouped类型的TableView的cell距离顶部有距离的问题: table ...
- iOS7中的多任务 - Background Fetch,Silent Remote Notifications,Background Transfer Service
转自:http://onevcat.com/2013/08/ios7-background-multitask/ 在IOS 7 出来不就,公司内部也组织了一次关于IOS 7 特性的的分享,今天看见on ...
- iOS7中的多任务I
[改变了后台任务的运行方式] 在iOS6和之前的系统中,系统在用户退出应用后,如果应用正在执行后台任务的话,系统会保持活跃状态直到后台任务完成或者是超时以后,才会进入真正的低功耗休眠状态. 而在iOS ...
- iOS7中的ViewController切换
转自:https://onevcat.com/2013/10/vc-transition-in-ios7/ iOS 7 SDK之前的VC切换解决方案 在深入iOS 7的VC切换效果的新API实现之前, ...
- iOS7中计算UILabel中字符串的高度
iOS7中计算UILabel中字符串的高度 iOS7中出现了新的方法计算UILabel中根据给定的Font以及str计算UILabel的frameSize的方法.本人提供category如下: UIL ...
随机推荐
- Memcached理解笔记1---安装&常规错误&监控
一.下载 1.Libevent 简单的说就是一个事件触发的网络库,Memcached离不开它. wget http://cloud.github.com/downloads/libevent/libe ...
- linux 查找删除找定文件
find . -name "*.lastUpdated" -exec rm -rf {} \; 这个命令是find的基本用法,可以分两部分,find ~/ -name " ...
- ANTLR4权威指南 - 第7章 通过特定应用程序代码解耦语法
第7章 通过特定应用程序代码解耦语法 到目前为止,我们已经知道了怎么用ANTLR的语法来定义语言了,接下来我们要给我们的语法注入一些新的元素了.就语法本身而言,其用处并不大,因为它只能告诉我们一个用户 ...
- layui框架使用总结
最近一个后台系统使用layui框架做的,遇到好多坑在这里总结一下. 1.layui的基本使用,下面的在他下面写,其他的事件也要在这个里面写 行内onclick事件是监听不到写在下面这种代码中的 ...
- 4.1 SQL的本质
对于早期的关系数据库,整个行业做了很多努力,试图统一不同的专用查询语言.IBM曾建立了一个早期的标准,被称为Structured English Query Language,这个名字缩写为SEQUE ...
- c#基础学习(0709)之vs通过抽象方法实现多态
抽象类不能用来实例化对象 1.抽象类中可以有实例成员,也可以有抽象成员 2.抽象成员不能有任何实现 3.抽象类.抽象成员必须包含在抽象类中 4.抽象类不能用来实例化对象,既然抽象类不能被实例化,那么抽 ...
- [日常] nginx与HTTP cache
去年的事,随便记记 =============================================================2017年12月11日 记录: nginx缓存:ngx_h ...
- iOS 网络请求数据缓存
1. NSURLCache简介: iOS对NSURLRequest提供了7种缓存策略:(实际上能用的只有4种) NSURLRequestUseProtocolCachePolicy // 默认的缓存策 ...
- spring-boot集成PageHelper和通用Mapper
前提条件:已经集成mybatis 代码生成步骤: 添加依赖 <dependency> <groupId>tk.mybatis</groupId> <artif ...
- mysqli 查询
$mysqli = new mysqli('localhost', 'user', 'pwd', 'dbname'); $query = "select goods_id,goods_nam ...