首页投稿(暂停使用,暂停投稿)牛叉的demo自己尝试等装一下

iOS-基础控件--UITbleViewCell的自定义(高度自

2016-06-16  本文已影响632人  云之君兮鹏
青楼梦好,难赋深情<巨钳蟹>

UITableVie 中系统的Cell共提供了四种默认样式, 分别是:
UITableVieCellStyleDefault
UITableVieCellStyleValue1
UITableVieCellStyleValue2
UITableVieCellStyleSubtitle
实际我们往往需要的是更为复杂或者专门效果展示所以需要按照要求去自己定义cell

自定义Cell步骤:

多种Cell可以混合使用:

一个重用标识符只能针对于一种Cell样式,不同的Cell样式需要基于不同的重用标识符来进行区分, 重用标识符的区分需要根据不同的情况来划分, 如:



布控子视图方法LayoutSubviews的调用场景

一般 ,Cell在创建的时候的fame 是(0,0,320,44), 我们给定的Cell的 度 般都会 于这个 。因此:在自定义Cell中创建的子视图的frame为CGRectZero。在Cell添加到TableView上的时候才会给子视图设置frame(即LayoutSubviews方法中),Cell 添加到TableView 的时候其大小已经更改为TableView设定的大小 ,这样就方便布局。



Model的使用:

创建步骤:
  • 创建一个类并继承于NSObject

封装一个自适应高度方法实现两个功能

代码

  #import <UIKit/UIKit.h> //这个框架要引入因为我们要用这些类
  @interface GetHeightTool : NSObject

// 声明两个方法

  + (CGFloat)getHeightForText:(NSString *)textShow
                   font:(UIFont *)fontShow
                  width:(CGFloat)widthShow;
  + (CGFloat)getHeightForImage:(NSString *)iamgeName
                   width:(CGFloat)widthShow;
   @end

// 实现部分
// 传入的三个参数
// 参数1: 你需要展示的文字 参数2: 你需要的字体类型一般就是给大小 参数3: 你定义的Label的宽也就是要在多宽的地方展示文字
// 返回值就是你想要的高度

  + (CGFloat)getHeightForText:(NSString *)textShow
                   font:(UIFont *)fontShow
                  width:(CGFloat)widthShow
{
   // 参数1:
return [textShow boundingRectWithSize:CGSizeMake(widthShow, 10000000) options:(NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName:fontShow} context:nil].size.height;
    }

// 传入参数 (可以根据情况去传参)
// 参数1: 传入照片的名字
// 参数2: 你想要展示的照片宽度
+ (CGFloat)getHeightForImage:(NSString *)iamgeName
width:(CGFloat)widthShow
{
// 按照比例去压缩或者放大
return widthShow / [UIImage imageNamed:iamgeName].size.width * [UIImage imageNamed:iamgeName].size.height;
}


这个就是一个简单的自适应效果,Label的高度会根据要显示的内容去调整, 宽度固定为屏幕的一半.

自适应高度.gif
上一篇 下一篇

猜你喜欢

热点阅读