iOS 知识碎片记录
2016-03-06 20:04
246 查看
1.父子控制器
父子控制器的使用可以大大的精简代码的耦合性,可以把比较复杂的界面拆分成多个控制器管理,比如网易新闻滚动新闻的实现,可以把用把多个tableview的控制器,作为scrollView所在的控制器的子控制器。给一个控制器加入了导航栏,控制器会自动调用-
(void)didMoveToParentViewController:(UIViewController *)parent方法,可以在这个方法内添加相应的操作。但是如果是手动调用
- (void)addChildViewController:(UIViewController *)childController ;
被添加的控制器不会调用该方法,只会调用
- (void)willMoveToParentViewController:(UIViewController *)parent
小知识
某些特殊情况需要注意:比如对于一个具有导航栏的控制器A,添加了子控制器B,并且把B的视图添加到了A上面,希望操作点击B上面的某个按钮push到某个控制器C,这时候是可以的,因为A有了导航栏属于导航栏的控制器,B是A的自控制器,也同样是导航栏的子控制器,所以导航栏可以进行push C控制器操作但是,如果A仅仅是将B的视图放在了自己的子视图位置,点击按钮无效,因为这个时候B的调用导航栏控制器方法的时候导航栏为空,没有办法进行push操作.
将子控制器的视图添加到父控制器不一定是全屏幕的,通过多次调用addSubView加入相同的视图不会造成多次重叠只会让视图呈现在最外面。
.默认情况下所有控制器的view的autoresizingMask属性包含UIViewAutoresizingFlexibleWidth和UIViewAutoresizingFlexibleHeight。所以在添加子控制器的视图到父控制器view的子视图如果外观不正确的话可以考虑将autoresizingMask属性设置为None.
tableView
如果想设置不同高度的单元格,可以先返回每一行的估计高度, 只要返回了估计高度,那么就会先调用tableView:cellForRowAtIndexPath:方法创建cell,再调用tableView:heightForRowAtIndexPath:方法获取cell的真实高度
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
想设置tableView多行选中可以自定义数组实现也可以使用:
// 允许在编辑模式进行多选操作 self.tableView.allowsMultipleSelectionDuringEditing = YES;
通过:
NSArray *indexPaths = [self.tableView indexPathsForSelectedRows];
获取获取选中的行。
scrollView
UIScrollView内部子控件添加约束的注意点:1.子控件的尺寸不能通过UIScrollView来计算,可以考虑通过以下方式计算
可以设置固定值(width==100,height==300)
可以相对于UIScrollView以外的其他控件来计算尺寸
2.UIScrollView的frame应该通过子控件以外的其他控件来计算
3.UIScrollView的contentSize通过子控件来计算
根据子控件的尺寸以及子控件与UIScrollView之间的间距
scrollView结束了滚动动画以后就会调用这个方法(比如- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;方法执行的动画完毕后)会调用下面方法 - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
手指松开scrollView后,scrollView停止减速完毕就会调用这个
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
相关文章推荐
- iOS蓝牙学习(一)
- IOS TextField 输入银行卡号格式化(每四位中间空一格)
- ios自动布局实现动画
- iOS沙盒目录清单
- IOS开发之待探究随录
- IOS-CocoaPods
- 字符串三种截取方法iOS
- iOS中常用几种支付方式
- 关于苹果iOS设备日期设置到1970年变砖的原理及解救方法
- JSPatch - 动态更新iOS APP
- iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)
- iOS 后台任务处理(多任务)
- iOS开发之获取手机信息
- iOS-合成图片(长图)
- iOS 一次上传多张图片, 并返回进度值
- iOS9 CGContextSaveGState错误
- 罗列iOS开发中各种的宏定义
- iOS 字符属性NSAttributedString描述
- iOS开发系列--并行开发详解
- iOS9中关于地址簿ABAddressBookXXX之类方法被废弃的解决