----------------------------------------------------------------------------- 受到挫折,写一些简单的练习,增加成就感
放大核心代码:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.testImageView;
}
- (void)initialize {
self.testScrollView.maximumZoomScale = 2.0;
self.testScrollView.minimumZoomScale = 0.5;
self.testScrollView.delegate = self;
}
// scrollView+图片缩放,图片要比scrollView大,才能滚动
// 设置代理,实现viewForZoomingInScrollView方法,告知是哪个view可以缩放
// 设置缩放比例,设置代理
// 一样大应该也能缩放,就是不能滚动缩放后应该可以滚动
// 目标:imgView跟scrollView大小相同,设置imgView四边约束跟scrollView距离为0,宽高都跟scrollView相同
// 设置图片放大倍数,搞定!
---------------------------------------------------------------------------
// push-pop present-dismis
// 跟李亚军要的代码,
- (void)dismiss { // 点完成
NSArray *controllerArray = self.navigationController.viewControllers;
for (UIViewController *vc in controllerArray) {
if ([vc isKindOfClass:[MAMyAppointmentsController class]]) {
[self.navigationController popToViewController:vc animated:YES];
return;
}
}
for (UIViewController *vc in controllerArray) {
if ([vc isKindOfClass:[MAJudgeDoctorViewController class]]) {
[vc dismissViewControllerAnimated:YES completion:nil]; // 如果是评价页,dismis
}
}
self.tabBarController.selectedIndex = 0;
[self.navigationController popToRootViewControllerAnimated:YES];
}
------------------------------------------------------------------------
打印结构体
NSStringFromCGRect(self.view.frame)
-------------------------------------------------
切换地区,选择西藏,应该跳到上海,但实际还是显示西藏,
有请求上海的接口,但是没保存数据,要刷新?
切换地区,再返回就有了
-------------------------------------------------
用完全自定义的返回按钮拦截返回按钮点击事件
-------------------------------------------------
mjExtenion可以将plist直接转成模型
直接用模型调方法,不是用NSArray调,要用自定义类去调,不然用自定义类的点语法会崩溃
-------------------------------------------------
切换分支,点checkOut
-------------------------------------------------
对比版本"
Cmd+shift+alt + enter
查找快捷键
----------------------------------------------------------------------------------------------------
提交的代码修改的哪个类
----------------------------------------------------------------------------------------------------
生成随机色
subView.backgroundColor = [UIColor colorWithRed:(CGFloat)random()/(CGFloat)RAND_MAX green:(CGFloat)random()/(CGFloat)RAND_MAX blue:(CGFloat)random()/(CGFloat)RAND_MAX alpha:1];
----------------------------------------------------------------------------------------------------
忘了写addSubView显示不出来
控制器-view-collectionView
view没有加collectionview, 拖线,没有了
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
发的通知一个是userInfo,一个是object
死活接不到通知,原来是
发的时候用userInfo,接的时候也得用notice点上uresinfo
发的时候用object接的时候也得用 notice点上object
怎么解决这个bug的打断点,发现通知接受到了,但是这个判断条件不走,一开始是self.serviceProjectKey isEqualToStr 判断一直是free免费咨询,猜测应该在创建cell的时候就绑定监听器,于是在collectionView的类里面监听了,而且监听对象是cell,
[[NSNotificationCenter defaultCenter]addObserver:cell selector:@selector(setRedDotStatus:) name:@"redDotStatus" object:nil];
以前没有这样写过通知,一般监听都是self,其实也可以是其他对象,第一次创建出来的对象
而且这个监听的方法可以全局相应,
回到刚才的问题,判断条件不对,通过打断点, 控制台po notice.usreinfo是nil,再 po notic.object是有值的!!于是用notice.object 就成功判断了
看帖子写的通知基本用法,作者用的userinfo传的参数,我却是用的object,所以接收也得用dict
通知观察者可以不是当前的类, 通知的回调方法可以不写在当前控制器
[[NSNotificationCenter defaultCenter]postNotificationName:@"redDotStatus" object:nil userInfo:dict];
-(void)setRedDotStatus:(NSNotification *)notice{ // 监听到了通知,但是判断条件不对
// NSDictionary *dict = notice.userInfo.copy;
if ([[notice.userInfo valueForKey:@"drug"] isEqualToString:@"1"] && [self.serviceProjectKey isEqualToString:@"useDrug"]) {
self.redDot.hidden = NO;
[[NSNotificationCenter defaultCenter]postNotificationName:@"redDotStatus" object:dict];
-(void)setRedDotStatus:(NSNotification *)notice{ // 监听到了通知,但是判断条件不对
// NSDictionary *dict = notice.userInfo.copy;
if ([[notice.object valueForKey:@"drug"] isEqualToString:@"1"] && [self.serviceProjectKey isEqualToString:@"useDrug"]) {
刚才纠结两个问题,如果通知写在cell里面,cell的标记只能拿到第一个,无法进行判断// 如果通知写在collectionView里面,通知回掉的方法怎么拿到cell呢?后来阴差阳错发现把通知观察写在viwe里面,相应的方法写在cell里面就可以了,观察者和相应的方法可以在不同的文件中,观察者cell是在view里面初始化的
观察到通知响应的方法写在cell的类里面
带block的通知? 使用带block的通知直接解决了上面的问题,
如何销毁呢?两个控制器都要销毁么?
-------------------------------------------------------------------------------------------------------------------------------------
字典@{key: value,key :value} KVC 前面是key,后面是value
两个通知可以同名么????????
-------------------------------------------------------------------------------------------------------------------------------------
红点经验
找到红点控件,当前类中搜索,看在哪里设置隐藏和显示的,(4处)
目标:观察红点显示规律,跟tabBar一起显示的,明确目标,跟tabBar上的红点一起显示
发现是从服务器请求下来的数据设置的,打断点,看服务器返回的是啥字段,啥内容,看原来的代码是如何判断的
发现1是显示红点,0是隐藏红点,从服务器拿到这个状态马上设置红点的显示和隐藏
我就在这四个地方(其实是三个地方,不算属性),发三个通知,请求失败,和未登录状态是同一个通知名字,直接设置红点隐藏.请求成功发送成功请求的通知,
在cell里面监听两个通知,取出相应的字段进行判断就搞定啦!!!!! 我最牛B 哈哈哈哈
红点还是用模型设置cell的显示和隐藏,尽量不用通知
用同通知好么?原来拖线直接设置,销毁?
如何检查内存泄露,控制器被销毁了,内存没有被释放
用模型设置cell原点,初始化就创建好控件,然后根据模型控制显示和隐藏。
reloaddata会错位,因为缓存池里面是无序的,
reloaddata会闪,谷歌,给答案,调用另外一个刷新方法。
红点请求完了马上reloaddata.使用点语法获取collectionview,
请求是同步的
// 遍历删除子控件
/*
CGRect entranceViewFrame = CGRectMake(0, 10, SCREEN_W, columCount * 78 + 15);
EntranceContainerView *view = [[EntranceContainerView alloc]initWithFrame:entranceViewFrame]; // self.entranceView.bounds
self.entranceView.frame = entranceViewFrame;
self.bigEntranceViewHeight.constant = 110 + entranceViewFrame.size.height;
view.entranceModelArray = self.entranceItemModelArray;
[self.entranceView addSubview:view];
for (UIView *view in self.entranceView.subviews) {
if (![view isKindOfClass:[EntranceContainerView class]]) {
[view removeFromSuperview];
view.hidden = YES;
}
}*/
---------
请求完毕reloadData
点语法
报错原因是用了点语法,但是只写了@class,应该用inport .h
[weakObject.entranceContainerView.entranceCollectionView reloadData] // 报错下面的
/Users/hdf/hdfPatient/haodf/PostTreament/Service/Controller/ServiceViewController.m:1084:10: Receiver type ‘EntranceCollectionView‘ for instance message is a forward declaration
---------------------------------------------------------------------------------------------------------
重构,前面判断。如果返回数据少,再请求一次,只有一个参数不同,再请求之前判断数组元素长度,如果是零,用默认城市请求,否则直接请求
选择城市后返回,数组长度为零,一定要用默认请求了。
定位城市医院为0,能切换到上海么?手动设置坐标西藏。
如果第三方看不懂,先会用
扣扣聊天如何做自动布局
拉伸图片的方法
光标在右边一点
通知机制模拟??
键盘通知
日期格式设置,发送消息,滚动tableview,发送消息的frame模型??自动回复?聊天文字背景图??
产品要求隐藏按钮,再将约束设置为0即可
xib创建自定义cell firstObject lastobject?
用xib创建cell,init方法设置基本属性,set方法设置详细内容
封装创建cell的方法l
footview无法修改y和宽度,也用单独的一个类管理
…………………………………………………………
控制器,容器view.collectionview,cell如何设置代理?创建的时候就设置代理?
dispatch after延迟执行
reloadrowatindexpath,如果行数发生变化会崩溃。
行数变化,用insertrowatindexpath不会崩溃
滚动到相应的位置。scrolltorowatindexpath
封装创建xib的类方法
mjextension也是模型工厂方法里面整的
initwithstyle tableviewcell
initwithframe collectionviewcell???
label不设置字体大小,有默认大小
封装枚举类型,set方法里面设置view颜色,itemsize,看苹果怎么写枚举的
如果不设置枚举,默认来个间距为零
工作时候少聊天。任务完成的好,心情好,都不长痘了。
王宇笔记做的好,推荐玉玉看course
如何切换分支。
基本养成了回家敲代码的习惯,累了就刷牙,洗脸,回来再敲
早上地铁上看笔记,做计划
如何创建分支
label sizetofit. 计算文字尺寸,???
只读的用下划线访问???????
hightforrow无法获取自定义cell高度?先调用,然后调用cellforrow?
任务,用多级代理,设置size.间距,左右,中间,如果不设,默认为零
设置collectionview的分割线
关键是找出规律
----
闪退,mas约束加错了,
如果定位失败,显示从服务端获取的地址,下面的内容也是这个地址的内容。
切换地区,如果定位失败,显示服务端获取的地址,下面的内容也是这个地址的内容
切换地区后如果没有内容,显示从服务端获取的地址,对应的内容
这周表现不错,加油吧