iOS新技术
来源:互联网 发布:怎样在淘宝分期付款 编辑:程序博客网 时间:2024/05/02 04:34
1.tableView的cell定位.目的:插入单元格 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.dataSource.count-1 inSection:0]; [self.tableView insertRowAtIndexPaths:@[indexPath] withRowAnimation];2.tableView内容多可以自动滚动 [tableView scrollToRowAtIndexPath:indexPathatScrollPosition:UITableViewScrollPositionBotton animated:YES];3.刷新单个单元格 [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationFade];4.imageWithName:相当于在内存中存了一张图片,如果要经常访问就用该方法。 而, imageWithContentOfFile,没有写入内存, 只显示一次,其路径为:[NSString *imgPath = [NSBundle mainBundle] pathForResouce:@”4”ofType:@”jpg”];5.各种传值 5.1 属性传值 前一个页面引入头文件 - 创建下一个页面 - 赋值 - 下一面直接调用 5.2 代理传值 5.3 block传值, 后页面(.h中写协议,方法,属性; .m中写方法判断) 前一个页面(遵守协议, 指定关系,调用传过来的值,方法实现) 5.4 单列传值,独立创建一个类Box @interface Box : NSObject //1.类⽅方法 //2.返回值: 当前类 //3.⽅方法名: main/default/shared + 类名 + (Box *)defaultBox; @property (nonatomic, copy)NSString *string;//只有写属性, 才能⽤用 + (Box *)defaultBox { static Box *box = nil;//初始化⼀一次, 静态区, 默认为0 if (box == nil) { box = [[Box alloc] init]; } return box;} //存⼊入箱⼦子Box *box = [Box defaultBox];box.string = textField.text; //从箱⼦子⾥里取内容Box *box = [Box defaultBox];self.navigationItem.title = box.string;6.在后台看运行时,NSLog打印来看,如果东西比较多,可以采用++++++,等其他方法分割; 双下划线FUNCTION双下划线 看走到那个方法中了。加断点最为常见。7.计算高度 //计算⾼高度//参数1: 容器⼤大⼩小, 必须保证其中⼀一个固定, 不确定就写0//参数2: 计算⽅方式, ⾏行间距 + ⾏行⾼高//参数3: 字体样式,//参数4: 上下⽂文, ⽤用于传值NSDictionary *dic = @{NSFontAttributeName:[UIFontsystemFontOfSize:17]};CGRect rect = [string boundingRectWithSize:CGSizeMake(335, 0)options:NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading attributes:dic context: nil];//最终只要 rect 的⾼高度8.将不同类型的数据类型放在一起, 结构体 struct girl {int age; char name[20]; float height;}; 一般都是采用重命名,typedef 数据类型 新类型名;比如:typrdef int AAA; typedef struct {int age; char name[20]; float height;} Girl;9. 垃圾回收机制: gc, garbage collection, iOS没有垃圾回收机制,通过引⽤用计数(retain count)管理内存; //内存管理的原则//1.引⽤用计数+1的操作(alloc, retain, new) 和 引⽤用计数-1的操作(release, autorelease) 的次数相同//2.谁创建, 谁释放; 想使⽤用, 先持有//3.当对象引⽤用计数为0时, 不能再使⽤用该对象, 否则会变成僵⼫尸对象//4.当对象不再使⽤用时, 应及时释放该对象10.关于拷贝11.- (id)copyWithZone:(NSZone *)zone {//1.伪拷贝 return [self retain];//2.浅拷贝 Dog *dog = [[Dog alloc] init]; dog.name = self.name; dog.age = self.age; return dog;//3.深拷贝Dog *dog = [[Dog alloc] init]; dog.name = [self.name copy];dog.age = self.age; return dog;}11. 关于不同的属性setter和getter方法 //assign, ⽣生成的setter和getter- (void)setAge:(NSInteger)age {_age = age;}- (NSInteger)age {return _age;}//retain, ⽣生成的setter和getter- (void)setName:(NSString *)name {if (_name != name) {[_name release];_name = [name retain];}}- (NSString *)name {return _name;}//copy, ⽣生成的setter和getter- (void)setGender:(NSString *)gender {if (_gender != gender) {[_gender release];_gender = [gender copy];}}- (NSString *)gender {return _gender;}12. 发送请求与服务器 请求参数:NSMutableDictionary *params = [NSMutableDictionary dictionary]; Params[@”a”] = @”list”; 等等参数,都是根据API接口数据 发送请求给服务器,加载数据,[AFHTTPSessionDataTask manager] GET:@”http:api.budajie.com/api/api_open.php”parameters:params success:^(NSURLSessionDataTask *task, id resonseObject)13. 提醒,除了用UIAlert, 还可以用[SVProgressHUD showErrorWithStatus:”加载失败”]14. TableView的每个cell连接服务器,发送请求以及从服务器中获取数据,底部的状态要经常使用。 - (void) checkFooterState { if(count == total) { self.userTableView.footer noticeNoMoreData];} else { [self.userTableView.footer endRefreshig];}}15.点击不同的控件,也就是发送了很多的请求,但是最后只要最后一个请求,这是用到:self.Params = params; if(self.Params != params) return;16.控制器的销毁,就是点击返回按钮,停止命令;AFH请求管理者,AFHTTPSessionManager*manager调用 -(void) dealloc { self.manmager.operationQueue cancelAllOperations];17.View之间,如果上面的view挡住下面的view时,这是可以将上面的view设置成clear颜色(透明色)18.数据请求需要根据公司提供的服务器接口,如果是page,那么每次上拉刷新和下拉刷新,只能通过删除以前数据(比较浪费流量);而如果接口数据提供给的是id,那么只需要将最大的id放在最上面就可以了。后面的旧数据不用改变。19.不希望别人请已修改自己的cell尺寸, 可以重写setFrame方法以及setBounds方法20.可以使用ppt来自己为view打草稿画图,21.textFieldShouldReturn,点击键盘换行按钮就会调用这个方法。退出键盘:[self.view endEditing:YES] 或者是[textField resignFirstResponer]22.控制键盘的输入形式:(比如表情键盘) 设置键盘顶部工具,self.textField.inputAccessoryView23.键盘上面的工具条可以使用: toolBar控制器 具体的运用如下:24.调用一些方法的时候,可以直接输入方法名,比如、;懒加载(lazy),等等只要输入’-’或者’+’方法名就可以了。 25. 遍历所有的view ,通过forin26.键盘弹出会调用textFieldDidBeginEditing27.防止代码重复,就需要对一些数据进行封装。封装的思想28.有些控制器会有两个代理,比如UIToolBar, 如何解决。29.瀑布流的思路:每次添加都再找最短的,并且是在UICollectionView里面操作。(里面的图片位置不同,大小不同。)30.textField时刻的变化,要想到其响应者的关系。(并且textField也有placeHolder的相关属性)31.登录时,使用KVC来完成32.登录注册占位符
0 0
- iOS新技术
- ios 如何学习新技术
- iOS 如何学习新技术
- iOS新技术和学习网站
- 新技术
- 新技术
- 新技术
- 新技术
- ios新技术文章转载链接汇总
- 【IOS开发新技术】swift4.0 新特性
- ios中的视图调试(ios8苹果引入了强大的新技术,不可不看)
- 【iOS新技术应用之Spotlight 让搜索与app无缝衔接】
- 【新技术】免苹果开发者账号申请ios证书打包ipa测试
- 关于新技术
- 新技术摘要
- APUSIC新技术
- 新技术笔记
- 常用新技术
- mybatis如何获取oracle新插入数据记录的主键?
- 《转》PyQt之自定义无边框窗口遮盖任务栏显示问题
- 提交到AppStore时失败,提交审核时提示:UIRequiredDeviceCapabilities
- HDU-1016(第一道DFS)
- Android Studio Shortcut on MAC
- iOS新技术
- PHP 5.3 ereg() 无法正常使用,提示“Function ereg() is deprecated Error
- tomcat6虚拟目录的配置
- 关于Images.xcassets/: warning: Ambiguous Content: The app icon set "XXX" has an unassigned child.的
- Android Seekbar间隔和自定义
- AWR报告提取 ORACLE10G RAC+AIX53
- 当某个类含有类指针成员时需注意
- 如何通过父类引用“调用”子类所独有的方法
- 随笔