iOS开发之cell位置contentOffset的用法

@property(nonatomic)         CGPoint                      contentOffset;                  // default CGPointZero

@property(nonatomic)         CGSize                       contentSize;                    // default CGSizeZero

/* Points. */

struct CGPoint {

CGFloat x;

CGFloat y;

};

typedef struct CGPoint CGPoint;

/* Sizes. */

struct CGSize {

CGFloat width;

CGFloat height;

};

由以上代码可知:

contentSize(类型为CGSize,代表尺寸):是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320宽 ,960高),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。 


contentOffset(类型为CGPoint,代表坐标):是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480 

 

contentInset是scrollview的contentview的顶点相对于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentview就是从scrollview的(0 ,100)开始显示 

 

cell位置获取方法:CGRect cellRect = [myTable rectForRowAtIndexPath:indexPath];

可取得cell在tableView中具体位置,以此来进行进一步的计算。如要获取cell在view中的位置,可进行如下计算:

float upY = myTable.contentOffset.y-cellRect.origin.y;//cell在view中y值

微信中,当用户对某一状态进行评论时,tableView将定位到将要评论的cell的底部,此功能计算如下:

//keyboardHeight为键盘高度,bgView为评论输入框所在背景视图高度,viewY为cell高度变化后所在view中的位置

float viewY = self.view.frame.size.height-(keyboardHeight+bgView.frame.size.height);

float spaceY = (cellRect.origin.y+cellRect.size.height)-(offset.y+viewY);

//调整tableView的contentOffset值

myTable.contentOffset = CGPointMake(0, myTable.contentOffset.y+spaceY);

时间: 2024-08-03 15:28:46

iOS开发之cell位置contentOffset的用法的相关文章

iOS开发之cell多按钮

iOS开发经常出现cell需要多个按钮,一般以为要导入第三方框架.但其实iOS 8以后,系统提供了UITableViewRowAction以及新的delegate方法,使得自定义一些操作变得非常容易.诸如置顶,删除,修改,更多,收藏等按钮. - (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{ // 添加一个置顶按钮 UITableViewRow

iOS开发之 cell重用后内容错乱

转自 http://www.cnblogs.com/ios8/p/ios-cell.html http://www.itnose.net/detail/6154013.html 一.清除缓存 tableView表格中的cell有重用机制,这是一个很好的东西,可以避免开辟很多的空间内存.但是有时候我们不想让它重用cell,,可以用以下的代码解决. 将这个代码放在: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowA

李洪强iOS开发之FMDB线程安全的用法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c81b13 }

IOS开发之TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式)

最近要做一个项目,有个账户设置界面,看了微博.微信.QQ,他们的账号设置都比较原生态没做什么处理.春雨医生的账号不错,做了许多处理.不说废话直接上代码. 第一步: //UserTableViewCell.h这里定义第一种Cell #import <UIKit/UIKit.h> @interface UserTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UIImageView *userviewcelli

iOS开发之17个常用代码整理

1.判断邮箱格式是否正确的代码 //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@&quo

李洪强IOS开发之iOS好项目收集

李洪强IOS开发之iOS好项目收集 在这里收集一些最近出现的比较实用好玩的框架或者项目,会不断更新 项目 简述 日期 SCTableViewCell 类似与QQ侧滑删除Cell的Demo 201501018 JHChainableAnimations 可读性好使用方便的动画库,语法类似与Masonry,使用链式编程 20150506 awesome-ios-chart iOS平台下的各种图表组件 20150513 DevArticles iOS Animation 主流炫酷动画框架(特效)收集整

iOS开发之Auto Layout入门

随着iPhone6与iOS8的临近,适配的问题讲更加复杂,最近学习了一下Auto Layout的使用,与大家分享.  什么是Auto Layout? Auto Layout是iOS6发布后引入的一个全新的布局特性,其目的是弥补以往Autoresizing在布局方面的不足之处,以及未来面对更多尺寸适配时界面布局可以更好的适应. 为什么要用Auto Layout? Autolayout能解决不同屏幕(iPhone4,iPhone5,iPad...)之间的适配问题. 在iPhone4时代开发者只需要适

iOS开发之UILabel

UILabel是iOS开发中常用的一个组件,主要用来显示内容. UILabel的主要使用如下: ? 1 2 3 4 5 6 7 8 9 10 /*尺寸*/ CGRect labelRect = CGRectMake(100, 100, 80, 40); /*初始化*/ UILabel *titleLabel = [[UILabel alloc] initWithFrame:labelRect]; /*一些属性的设置*/ titleLabel.font = [UIFont systemFontOf

iOS开发之Socket通信实战--Request请求数据包编码模块

实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncSocket来进行长连接连接和传输数据,该第三方地 址:https://github.com/robbiehanson/CocoaAsyncSocket,读者可以自行google或者baidu搜索 这个库的用法,网上有很多资料,而且用法不难. 在一些对Socket通信使用需求不是很高的应用中,比如需要