解决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 ...
随机推荐
- JavaScript引用类型和值类型
thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>t ...
- 008.在C#中,显式接口VS隐式接口
原文http://www.codeproject.com/Articles/1000374/Explicit-Interface-VS-Implicit-Interface-in-Csharp (At ...
- SQL——Sql_Server中如何判断表中某字段、判断表、判断存储过程以及判断函数是否存在
一.比如说要判断表A中的字段C是否存在两个方法: (1) 直接查表——有点笨,有点常规 IF EXISTS ( SELECT 1 FROM SYSOBJECTS T1 INNER JOIN SYSCO ...
- java自学-运算符
上一篇介绍了java的变量和数据类型,要对数据处理,还需要用到java运算符,这里只总结下常用的,运算符主要分为以下几类:1 算数运算符 算数运算符包括: + 加法运算 - 减法运算 * 乘法运算 / ...
- Telnet 模拟邮件发送过程
Telnet 模拟邮件发送过程 windows要提前开启Telnet客户端的功能,再按照下面步骤完成邮件发送: 1.通过 cmd 进入命令窗口 2.连接要发送邮件的服务器:telnet smtp.al ...
- 悟空模式-java设计模式
目前已定义的java设计模式细分下来有二十余种,这篇博客主要是想从大家所熟知的孙悟空入手,阐述各个设计模式的概念和优缺点,以及他们之间的联系. 在下面介绍的每个设计模式里,都会有与西游记相关的具体案例 ...
- ZooKeeper 节点
ZNode zk 中的每一个数据节点称为 ZNode ,所有的 ZNode 按层次化结构进行组织,形成一棵树(与Linux文件系统相似).节点可以写入数据,也可以在节点下面创建子节点. 节点类型: 1 ...
- 虚拟机VMware workstations的网络设置
一般遇到虚拟机中上不了网的问题,可以这样解决: 1.在终端输入命令:ifconfig.--查看eth0接口上是否有IP地址. 发现eth0接口上没有ip地址. 2.输入cat /etc/sysconf ...
- time模块,计算时间差
计算当前时间与所输入的时间的时间差 #1 计算当前时间的时间戳时间 t_now = time.time() # 计算以前的时间的时间戳时间 t_before = input('请输入时间(例如:200 ...
- JS 自定义对象 属性
js自定义对象 一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在J ...