ios自定义cell

iOS开发小技巧--纯代码自定义cell

十年热恋 提交于 2020-02-25 12:26:31
纯代码自定义cell 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle:方法中进行子控件的初始化 2.1将有可能显示的所有子控件添加到contentView中,代码如下 2.2顺便设置子控件的一些属性(一次性属性:文字颜色,字体,背景) /// cell初始化方法中对子控件进行初始化 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { /** cell顶部的容器 */ UIView *topContainerView = [[UIView alloc] init]; [self.contentView addSubview:topContainerView]; self.topContainerView = topContainerView; /** 头像图片 */ UIImageView *headerImageView = [[UIImageView

iOS11 & iPhone X 适配指南

巧了我就是萌 提交于 2020-02-03 00:48:43
苹果WWDC开发者大会上,终于发布了大家期待已久的iOS 11,有些新特性功能确实出人意料。不过大的方面苹果貌似也就 AR 和 GM 机器学习了,9月13日凌晨1点,苹果开了新品发布会,相信大家都已经知道Phone X 的刘海了,看起来不是很雅观,对于iOS开发者来说,适配工作也带来了麻烦,iOS11在新旧API 方面做了新的改动,未来App Store就会出现很多大量的APP更新,针对iOS11和iPhone X的适配。 下面针对已经了解的出现的问题进行适配的说明。 屏幕未充满? 相信一部分开发者已经在着手适配iPhone X 和iOS11 了,xcode9测试版运行自己的项目会发现项目没有充满屏幕,上下会有黑色区域的情况,大家别慌,这是没有设置对应的启动图,iPhone X对应像素 1125 * 2436 大家可以自己添加图片或者准备一张尺寸:1125 * 2436的启动图片, 移动到LaunchImage的Finder目录中, 并在LaunchImage中的Contents.json文件中增加 (注意Json格式): { "extent" : "full-screen", "idiom" : "iphone", "subtype" : "2436h", "filename" : "图片名字.png", "minimum-system-version" : "11.0",

IOS开发实训第八周周报

依然范特西╮ 提交于 2020-01-30 05:10:40
IOS开发实训第八周周报 总结: 根据小组分工,本周我学习的知识点有:对于个人页面的用户收藏列表和浏览列表,进行优化,包括: (1)如何进行UITableViewCell的格式自定义 (2)UITableViewCell自适应地高度 (3)学习UITableViewCell的缓存机制 学习知识点归纳 1. 自定义UITableViewCell 自定义UITableViewCell有两种形式:纯代码定义与xib格式定义 (1)纯代码定义 创建UITableViewCell的子类,作为自定义Cell,并重写初始化函数:initWithStyle:withReuseableCellIdentifier,完成Cell内部子控件的声明与加载; - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if(self) { [self setMyView]; } return self; } 在使用之前,需要为这个Cell注册一个CellIdentifier,以便于系统缓存重用的cell: [ tableView

ios cell展示可滑动的图片

青春壹個敷衍的年華 提交于 2020-01-05 02:03:42
需求: 点击cell上的图片.图片以原图显示出来,可以放大或缩小.再次点击图片移除图片显示原来界面.(和QQ空间看图片类似) 点击图片实现效果: 1. 自定义一个 UITableView ( KDImageDetailTableView ) 在方法( - ( id )initWithFrame:( CGRect )frame style:( UITableViewStyle )style )里面设置代理对象手势,tableView的背景色,隐藏指示器等 - ( id )initWithFrame:( CGRect )frame style:( UITableViewStyle )style { self = [ super initWithFrame :frame style :style]; if ( self ) { // Initialization code // 解决手势冲突 ( 代理对象必须是 UIScrollView 类的对象 ) self . panGestureRecognizer . delegate = self ; // 设置代理对象 self . dataSource = self ; self . delegate = self ; // 设置背景颜色 self . backgroundColor = [ UIColor blackColor ];

AJ学IOS 之微博项目实战(7)程序启动新特性用UICollectionViewController实现

泪湿孤枕 提交于 2019-12-28 04:59:52
AJ分享,必须精品 一:效果 这里实现了大多数app都会有的软件新特性的功能,用的是UICollectionViewController实现的 二:思路 这里用了UICollectionViewController实现,就是做一个没有间隙,每个cell都是一个屏幕的UICollectionViewController,自定义的。然后把下面的UIPageControl 还有最后一页的开始以及分享按钮放入就OK了。 调用的时候,首先获取当前的app的版本号,然后再获取上一个版本。进行两个版本的比较。当前版本和上一个版本不同,当前版本是从infoDictionary中拿到的,上一个版本是从自己存的NSUserDefaults 中的NYVersionKey拿到的,并且苹果允许上传小于当前版本的app,如果是第一个版本时候,上一个版本还没有值,也会不同。 根据结果设置window的不同根控制器。 自定义UICollectionViewController步骤: 要注意: 1.初始化的时候设置布局参数 2.collertionView必须注册cell 3.自定义cell 三:代码 调用部分代码:AppDelegate //1,获取当前的版本号 NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@

iOS开发之自定义UITableViewCell

房东的猫 提交于 2019-12-26 19:09:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 等高的Cell 一、storyboard方式 创建一个继承自UITableViewCell的子类 在storyboard中 - 往cell里面增加需要用到的子控件 - 设置cell的重用标识 - 设置cell的class为我刚才创建的那个Cell类型XXDealCell 3. 在控制器中 - 利用重用标识找到cell - 给cell传递模型数据 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.deals.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"deal"; XXDealCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; //取出模型数据 cell.deal = self.deals[indexPath.row]; return cell; } 4

ios 融云自定义消息

瘦欲@ 提交于 2019-12-23 12:56:11
关于在融云上创建自己的应用、集成 SDK、初始化等一些基本的我们在这就不多说了,按照他的教程可以很容易的完成。 ①会话列表的实现 会话列表的实现其实也很简单,就是创建一个继承于RCConversationListViewController的控制器,然后重写 init 的方法,这个里边我们需要设定需要显示的会话类型。 -(id)init{ self = [super init]; /** <设置会话列表头像为圆形> **/ [self setConversationAvatarStyle:RC_USER_AVATAR_CYCLE]; if (self) { //设置需要显示哪些类型的会话 [self setDisplayConversationTypes:@[@(ConversationType_PRIVATE), @(ConversationType_DISCUSSION), @(ConversationType_CHATROOM), @(ConversationType_GROUP), @(ConversationType_APPSERVICE), @(ConversationType_SYSTEM)]]; //设置需要将哪些类型的会话在会话列表中聚合显示 [self setCollectionConversationType:@[@(ConversationType

如何禁用UITableView选择?

…衆ロ難τιáo~ 提交于 2019-12-11 12:03:49
当您在 UITableView 点击一行时,该行将突出显示并被选中。 是否可以禁用此功能,因此点击一行什么都不做? #1楼 从 UITableViewDelegate 协议,您可以使用方法 willSelectRowAtIndexPath ,如果您不想选择行,则 return nil 。 以同样的方式,您可以使用 willDeselectRowAtIndexPath 方法,如果您不希望取消选择该行,则 return nil 。 #2楼 试试这个 cell.selectionStyle = UITableViewCellSelectionStyleNone; 和 [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 您还可以使用interfacebuilder设置选择样式。 #3楼 对我来说,以下工作正常: tableView.allowsSelection = false 这意味着 didSelectRowAt# 根本不起作用。 也就是说,触摸桌子的一排,就这样,绝对不会做任何事情。 (因此,显然,永远不会有选定的动画。) (注意,如果在单元格上,你有 UIButton 或任何其他控件,当然这些控件仍然可以工作。你碰巧在表格单元格上有任何控件,与UITableView允许你“选择一行”的能力完全无关“使用

优化UITableView性能

一笑奈何 提交于 2019-12-10 17:49:39
在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天气、照片、电话、短信、 Safari、App Store、iTunes、Game Center⋯几乎所有自带的应用中都能看到它的身影,可见它的重要性。 然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。 实际上只要针对性地优化一下,这种问题就不会有了。有兴趣的可以看看 LazyTableImages 这个官方的例子程序,虽然也要从网上下载图片并显示,但滚动时丝毫不卡。 下面就说说我对UITableView的了解。不过由于我也是初学者,或许会说错或遗漏一些,因此仅供参考。 首先说下UITableView的原理。有兴趣的可以看看 《About Table Views in iOS-Based Applications》 。 UITableView是UIScrollView的子类,因此它可以自动响应滚动事件(一般为上下滚动)。 它 内部包含0到多个UITableViewCell对象,每个table cell展示各自的内容。当新cell需要被显示时,就会调用tableView:cellForRowAtIndexPath:方法来获取或创建一个 cell;而不可视时,它又会被释放。由此可见

[非凡程序员]XibView tableViewXib

≯℡__Kan透↙ 提交于 2019-12-09 22:04:49
//Xibs 就是布局界面的一种方式。 // 创建 xib 的方法 : 选择 New->File->UserInterface->Empty 设置将要创建 Xib 的文件名字, //============ 第一种: 首先,关于 Xib 加载 这里以 “XibLoadView” 为例 ==========// //-------------- 进入 XibLoadView.xib 文件 ----------- // 创建好 Xib 文件后,我们看到 Xib 中没有任何页面,拖进一个 View 控件,此时 View 控件不能调节大小,设置 View 的 size 是 Freeform, 拖入应有的控件。 //-------------- 进入 Viewcontroller.m 文件 ------------ //1. 加载 Xib 文件。 /* bundle 是一个目录 , 其中包含了程序会使用到的资源 . 这些资源包含了如图像 , 声音 , 编译好的代码 ,nib 文件 ( 用户也会把 bundle 称为 plug-in). 对应 bundle,cocoa 提供了类 NSBundle. 我们的程序是一个 bundle. 在 Finder 中 , 一个应用程序看上去和其他文件没有什么区别 . 但是实际上它是一个包含了 nib 文件 , 编译代码 , 以及其他资源的目录 .