摘要:
微博正文开发步骤总结1.新建正文控制器,在点击首页的某一条微博时跳转过去2.在MainController中设置导航控制器的代理,监听所有导航控制器的跳转1> 如果即将显示的不是根控制器* 将导航控制器view的高度拉长为屏幕的高度(不包括状态栏高度)* 添加Dock到跟控制器(目的是在切换控制器时,Dock能随着根控制器一起移动。注意设置Dock的y值,当根控制器view是UIScrollView时,要加上contentOffset的y值。)* 给即将显示的控制器添加左上角的返回按钮2> 如果显示完毕的是根控制器* 将导航控制器view的高度还原为默认高度(屏幕高度 - Dock 阅读全文
摘要:
一、tableView每组的头部控件1.控件宽度默认就是tableView的宽度2.控件高度由下面的代理方法决定- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section二、通过tableView的代理方法控制某一行的cell能否达到高亮选中状态- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath 阅读全文
摘要:
一、导航控制器的代理1.UINavigationController的delegate属性2.代理方法1> 即将显示新控制器时调用/*navigationController : 导航控制器viewController : 即将显示的新控制器*/- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated2> 新控制器显示完毕时调用 阅读全文
摘要:
1.webView之所以能够滚动,因为它内部有一个UIScrollView子控件2.移除webView顶部和底部灰色的一层view* 遍历webView中scrollView内部的所有子控件* 移除里面的UIImageView3.利用webView执行脚本[webView stringByEvaluatingJavaScriptFromString:script]; 阅读全文
摘要:
1.比较大小- (NSComparisonResult)compare:(NSString *)string;返回值NSComparisonResult有3种情况:NSOrderedAscending = -1L, // 升序(左边 右边)比如[@"ab" compare:@"ad"]返回NSOrderedAscending比如[@"ab" compare:@"aa"]返回NSOrderedDescending比如[@"ab" compare:@"ab"]返回NSOrdere 阅读全文
摘要:
1.新建一个xib描述UICollectionViewCell(比如DealCell.xib),设置好resuse identifier(比如deal)2.控制器继承UICollectionViewController1> 注册xib[self.collectionView registerNib:[UINib nibWithNibName:@"DealCell" bundle:nil] forCellWithReuseIdentifier:@"deal"];2> 重写init方法- (id)init{ UICollectionViewFlo 阅读全文
摘要:
1> 规律* width 是宽高中最小的那个值* height 是宽高中最大的那个值2> 举例(比如窗口根控制器的view,有状态栏的情况下)* 横屏 width = 748,height = 1024* 竖屏 width = 768,height = 1004 阅读全文
摘要:
1.屏幕即将旋转的时候调用(控制器监控屏幕旋转)- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration2.屏幕旋转完毕的时候调用- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation3.view创建完毕的时候调用- (void)viewDidLoad这个方法调用时,控制器的view只是 阅读全文
摘要:
一、UIView的clipsToBounds属性* 默认情况下,超出父控件尺寸范围的子控件还是可见的* 如果设置父控件的clipsToBounds=YES,就会裁剪掉超出父控件尺寸范围内的子控件,即超出父控件尺寸范围内的子控件就不显示二、layoutSubViews* 在一个控件的尺寸(宽高发生改变)的时候调用,一般在这里重新调整内部子控件的位置* 重写layoutSubViews方法时,一定调用回super的layoutSubViews的方法(super内部有一些必须要执行的操作)三、触摸事件传递(默认情况下)* 如果父控件不能接收事件,子控件是不可能接收到事件的* 如果点击的区域不在某个控 阅读全文
摘要:
一、运行时简单使用1.包含头文件2.给对象发送消息的方法:objc_msgSend(id, SEL, ....)* 第1个参数是对象* 第2个参数是方法* 后面的...参数是调用方法需要传递的参数3.平时的方法调就是转成了底层的消息机制函数调用,比如[person setAge:10];转成了objc_msgSend(person, @selector(setAge:), 10);二、KVC补充NSArray *data = [_citiesData valueForKeyPath:@"name"];上面代码所做的操作是:* 先取出_citiesData中的每一个对象元素* 阅读全文
摘要:
1.搜索框的代理(delegate)方法#pragma mark 监听搜索框的文字改变- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText#pragma mark 搜索框开始编辑(开始聚焦)- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar#pragma mark 当退出搜索框的键盘时(失去焦点)- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar#pr 阅读全文
摘要:
一、封装一个View的思路1.将View内部的业务逻辑(显示内容)封装到View中2.一般情况下,View的位置应该由父控件来决定,也就是位置不应该固定死在View内部3.至于View的宽高,根据具体情况来决定要不要由父控件决定 阅读全文
摘要:
一、iPad中控制器view的width和height1> 规律* width 是宽高中最小的那个值* height 是宽高中最大的那个值2> 举例(比如窗口根控制器的view,有状态栏的情况下)* 横屏 width = 748,height = 1024* 竖屏 width = 768,height = 1004二、项目图标和启动图片不同设备上的图标和启动图片尺寸规格是不一样的,详情可以在苹果官方文档中搜索“app icon”,查看下列搜索结果:1> App Icons on iPad and iPhone2> App Icons 阅读全文