iOS开发之KVO机制的妙用
压抑不住激动得心情,趁着今天时间多,我就全部拿来写博客好了,当然,不吹牛逼了。吹多了,写不出来代码怎么办呢。
我们提供的服务有:成都做网站、网站设计、微信公众号开发、网站优化、网站认证、大同ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的大同网站制作公司
前言:还记得当我接到自己第一个项目的时候,首页的collectionview的frame一直定不好,总会出现collectionview太大了,或者底层的scrollview的contentsize太小了。这些通过小调frame都可以实现不会挡住。但是,后来当客户提出要加上热卖推荐字段的时候 我就懵了。怎么来实现呢,还要保证在collectionview底部有------END-----字段。这些通过小调frame就不能实现了。终于,借鉴前辈的方法,用KVO机制,巧妙的解决了这个难题。
正文:
PS:小弟刚写,不知道如何调节大小,望见谅,见谅哈。
应该不难看出图中的collectionVIew的大小事动态改变的吧。
这里,在我们准备在self.view中加入collectionview视图的时候,可以用interfacebuilder来画出图中的热卖推荐字段与end字段。再在两个字的中间拉入一个collectionview定好他的约束。
然后在我们的实现代码文件中,在viewwillappear中初始化一个观察者:
[contentcollectionViewaddObserver:selfforKeyPath:@"contentSize"options:NSKeyValueObservingOptionNewcontext:@"RecommendProductcontentsize"];
然后在viewwilldisappear中移除观察者:
if (isRem) {
@try {
[contentcollectionViewremoveObserver:selfforKeyPath:@"contentSize"];
}
@catch (NSException *exception) {
NSLog(@"%@",exception);
}
@finally {
}
}
然后实现回调回调方法:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary
if ([keyPath isEqualToString:@"contentSize"]) {
CGSize size;
[change[@"new"] getValue:&size];
recommendationView.frame = CGRectMake(0, 370+4, centerView.bounds.size.width, size.height+122);
scrollView.contentSize =CGSizeMake(centerView.frame.size.width,recommendationView.frame.origin.y+recommendationView.frame.size.height);
}else{
NSLog(@"添加观察者出错");
}
}
在这里面我们设定了我们热卖推荐字段的frame与scrollview的contentsize。
size为改变后collectionview的高度。
这样我们就能实现我们想要达到的效果啦。
分享标题:iOS开发之KVO机制的妙用
标题来源:http://scjbc.cn/article/pdgedj.html