首页 > 代码库 > 解决UITableView在iOS7中UINavigationController里的顶部留白问题
解决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(0, [WxHxD statusBarAndNavigationBarHeight], [WxHxD screenWidth], [WxHxD screenHeight] - [WxHxD statusBarAndNavigationBarHeight])]; backView.layer.borderWidth = 2.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:24.f]; [self titleTextAttributes:NCTitle];}#pragma mark - 代理- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 7;}- (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:18.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里的顶部留白问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。