博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios-表视图-demo-自定义cell和心得
阅读量:5996 次
发布时间:2019-06-20

本文共 2839 字,大约阅读时间需要 9 分钟。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{            static NSString *cellindentifier=@"cell";        if (self.celltype==KTableViewCellContenview) {
//第一种自定义cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellindentifier]; if (cell==nil) { cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellindentifier]; UILabel*lable= [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];//在这里创建性能更高,最少的创建实例滑动的时候 lable.tag=101; [cell.contentView addSubview:lable]; } UILabel * lable=(UILabel *) [cell.contentView viewWithTag:101]; lable.text=_dataarray[indexPath.row]; lable.font=[UIFont fontWithName:_dataarray[indexPath.row] size:16]; return cell; }else if(self.celltype==KTableViewCellCustom){ MyCell *cell = [tableView dequeueReusableCellWithIdentifier:cellindentifier]; if (cell==nil) { cell=[[MyCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellindentifier]; NSLog(@"排版前%d",indexPath.row); } return cell; }else if(self.celltype==KTableViewCellNib){
//从nib来 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellindentifier]; if (cell==nil) { NSArray*nibs=[[NSBundle mainBundle]loadNibNamed:@"MyCell" owner:self options:nil]; cell=[nibs objectAtIndex:0]; } UILabel * lable=(UILabel *) [cell.contentView viewWithTag:102]; lable.text=_dataarray[indexPath.row]; lable.font=[UIFont fontWithName:_dataarray[indexPath.row] size:16]; return cell; }else{ return nil; } }

 

首先是对我们为什么自定义系统的cell尺寸没用,因为ios会在我们创建了一屏幕的cell的时候会调用-(void)layoutSubviews{    [super layoutSubviews];    self.textlabel.frame=CGRectMake(0, 0, 300, 44);}对创建了的cell进行重新排版,当然这里的重新排版只会对contentview以外的进行排版,以后滑动屏幕的时候,可能是新建立的cell或者重用的都会进行排版,想要对contentview进行手动排版的话可以手动来覆写-(void)layoutSubviews{    [super layoutSubviews];    //在这里写,比如下面这个文件这样}
////  MyCell.m//  CustomCellDemo////  Created by  liyang on 14-4-28.//  Copyright (c) 2014年 liyang. All rights reserved.//#import "MyCell.h"@implementation MyCell- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];    if (self) {        _label=[[UILabel alloc]initWithFrame:CGRectZero];        _label.backgroundColor=[UIColor orangeColor];        [self.contentView addSubview:_label];    }    return self;}-(void)layoutSubviews{    [super layoutSubviews];    _label.frame=CGRectMake(0, 0, 300, 44);     NSLog(@"排版后%d");}@end

 

 

转载于:https://www.cnblogs.com/liyang31tg/p/3697988.html

你可能感兴趣的文章
如何编写高质量代码
查看>>
geohash简单应用-面对面匹配好友
查看>>
为什么说 Java 中只有值传递
查看>>
哪些创业赛事活动平台能够对接创业扶持政策
查看>>
云计算教程学习,linux操作系统内配置vlan+kvm虚拟机
查看>>
任何人都能懂的CSR和SSR
查看>>
《Java并发编程的艺术》——第1章 并发编程的挑战
查看>>
leetcode刷题记录(python)-1. 两数之和
查看>>
Java面试题-并发篇十六
查看>>
Spring Boot 、Spring Data JPA、Hibernate集成
查看>>
一个优质的项目应该具有什么特点
查看>>
Docker 之 运行状态监控
查看>>
基于canvas的骨骼动画
查看>>
根据调试工具看Vue源码之虚拟dom(一)
查看>>
[译] 编程语言和平台:对一条推特思路的评论
查看>>
OpenGL的点与向量
查看>>
解决Android Studio 3.1 版本Logger无法显示tag导致的错位
查看>>
常用的设计模式
查看>>
解决WKWebview localstorage 存取信息不一致问题
查看>>
网页布局方法
查看>>