国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS實(shí)現(xiàn)UITableView數(shù)據(jù)為空時(shí)的提示頁(yè)面

2020-07-26 03:05:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

相信對(duì)于iOS開(kāi)發(fā)者們來(lái)說(shuō),在開(kāi)發(fā)過(guò)程中,經(jīng)常用UITableView,一定會(huì)遇到數(shù)據(jù)為空的情況,這時(shí)需要在空頁(yè)面上放一個(gè)圖片和一行文字提示數(shù)據(jù)為空,下面整理了兩種方法來(lái)實(shí)現(xiàn)這個(gè)功能。

第一個(gè)是繼承UITableView,在新類中集成圖片和文字

#import <UIKit/UIKit.h>#import "Const.h"@interface WFEmptyTableView : UITableView@property (nonatomic, assign) BOOL showEmptyTipView; // 是否顯示背景提示文字@property (nonatomic, assign) NSInteger vOffset;@property (nonatomic, copy) NSString *tipString;  // 提示文字@property (nonatomic, copy) NSString *tipImageName; // 提示圖片@end

具體實(shí)現(xiàn)

#import "WFEmptyTableView.h"@implementation WFEmptyTableView { UIView *_customBackView; UIImageView *_tipImageView; UILabel *_label; CGRect _imageFrame; CGRect _labelFrame; double _scale;}- (WFEmptyTableView *)initWithFrame:(CGRect)frame style:(UITableViewStyle)style { self = [super initWithFrame:frame style:style]; if (self) {  [self setupViews]; } return self;}- (void)setupViews { _customBackView = [[UIView alloc] initWithFrame:self.frame]; _customBackView.backgroundColor = [UIColor yellowColor]; _tipImageView = [[UIImageView alloc] initWithFrame:CGRectMake((kScreenWidth-200/2)/2, self.frame.size.height/3, 200/2, 200/2)]; [_customBackView addSubview:_tipImageView]; _imageFrame = _tipImageView.frame; _label = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(_tipImageView.frame), kScreenWidth, 100)]; _label.backgroundColor = [UIColor clearColor]; _label.textAlignment = NSTextAlignmentCenter; _label.textColor = [UIColor lightGrayColor]; _label.font = [UIFont systemFontOfSize:16]; _label.lineBreakMode = NSLineBreakByCharWrapping; _label.numberOfLines = 0; [_customBackView addSubview:_label]; _labelFrame = _label.frame;}- (void)setShowEmptyTipView:(BOOL)showEmptyTipView { _showEmptyTipView = showEmptyTipView; if (showEmptyTipView) {  [self addSubview:_customBackView]; } else {  [_customBackView removeFromSuperview]; }}- (void)setTipString:(NSString *)tipString { _tipString = tipString; NSMutableAttributedString * attributedString1 = [[NSMutableAttributedString alloc] initWithString:tipString]; NSMutableParagraphStyle * paragraphStyle1 = [[NSMutableParagraphStyle alloc] init]; [paragraphStyle1 setLineSpacing:15]; [paragraphStyle1 setAlignment:NSTextAlignmentCenter]; [attributedString1 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, [tipString length])]; [_label setAttributedText:attributedString1]; [self resetFrame];}- (void)setTipImageName:(NSString *)tipImageName { _scale = 1; UIImage *image = [UIImage imageNamed:tipImageName]; _scale = image.size.height*1.0 / image.size.width; _tipImageView.image = image; if (isnan(_scale)) {  _scale = 1; } [self resetFrame];}- (void)setVOffset:(NSInteger)vOffset { _label.frame = CGRectMake(CGRectGetMinX(_label.frame), CGRectGetMinY(_label.frame)+vOffset, CGRectGetWidth(_label.frame), CGRectGetHeight(_label.frame)); _tipImageView.frame = CGRectMake(CGRectGetMinX(_tipImageView.frame), CGRectGetMinY(_tipImageView.frame)+vOffset, CGRectGetWidth(_tipImageView.frame), CGRectGetHeight(_tipImageView.frame));}- (void)resetFrame { _tipImageView.frame = CGRectMake(0, CGRectGetMinY(_tipImageView.frame), 150, 150 * _scale); _tipImageView.center = CGPointMake(kScreenWidth / 2.0, _tipImageView.center.y); _label.frame = CGRectMake(CGRectGetMinX(_label.frame), CGRectGetMaxY(_tipImageView.frame), CGRectGetWidth(_label.frame), CGRectGetHeight(_label.frame));}@end

還有一種方法,是用Category

#import <UIKit/UIKit.h>@interface UITableView (WFEmpty)@property (nonatomic, strong, readonly) UIView *emptyView;-(void)addEmptyViewWithImageName:(NSString*)imageName title:(NSString*)title;@end

具體實(shí)現(xiàn)

#import "UITableView+WFEmpty.h"#import <objc/runtime.h>static char UITableViewEmptyView;@implementation UITableView (WFEmpty)@dynamic emptyView;- (UIView *)emptyView{ return objc_getAssociatedObject(self, &UITableViewEmptyView);}- (void)setEmptyView:(UIView *)emptyView{ [self willChangeValueForKey:@"HJEmptyView"]; objc_setAssociatedObject(self, &UITableViewEmptyView,        emptyView,        OBJC_ASSOCIATION_ASSIGN); [self didChangeValueForKey:@"HJEmptyView"];}-(void)addEmptyViewWithImageName:(NSString*)imageName title:(NSString*)title{ if (!self.emptyView) {  CGRect frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);  UIImage* image = [UIImage imageNamed:imageName];  NSString* text = title;  UIView* noMessageView = [[UIView alloc] initWithFrame:frame];  noMessageView.backgroundColor = [UIColor clearColor];  UIImageView *carImageView = [[UIImageView alloc] initWithFrame:CGRectMake((frame.size.width-image.size.width)/2, 60, image.size.width, image.size.height)];  [carImageView setImage:image];  [noMessageView addSubview:carImageView];  UILabel *noInfoLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 160, frame.size.width, 20)];  noInfoLabel.textAlignment = NSTextAlignmentCenter;  noInfoLabel.textColor = [UIColor lightGrayColor];  noInfoLabel.text = text;  noInfoLabel.backgroundColor = [UIColor clearColor];  noInfoLabel.font = [UIFont systemFontOfSize:20];  [noMessageView addSubview:noInfoLabel];  [self addSubview:noMessageView];  self.emptyView = noMessageView; }}@end

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 始兴县| 利辛县| 绥棱县| 上犹县| 广东省| 筠连县| 林州市| 北票市| 江城| 鲁甸县| 诸城市| 盖州市| 辽阳市| 宁蒗| 西吉县| 册亨县| 重庆市| 金阳县| 桓台县| 拜城县| 茂名市| 长阳| 烟台市| 当阳市| 仁布县| 友谊县| 永新县| 睢宁县| 天台县| 阳信县| 丽水市| 饶阳县| 邳州市| 武清区| 白水县| 林州市| 湖南省| 子洲县| 静海县| 达拉特旗| 云浮市|