最近看到的需要整理的内容(2)

工作中遇到的问题2

***.h file not found

进入Build Settings -> Search Paths 更改路径

cell自动计算高度

1、用约束进行约束自动计算之后,可能会有约束警告,这样的话,在我们拖动tableView的时候不停的进行刷新,会有闪烁卡顿的情况。
2、这时我们应该取消底部约束,利用最底部的view的最大y值来进行计算,赋值之后,将高度返回给tableView,利用代理方法为tableViewcell设置高度。
3、这样就不会有约束警告问题了,属于设置技巧。

Masonry 约束优先级的问题

    - Content Hugging Priority: 该优先级表示一个控件抗被拉伸的优先级。优先级越高,越不容易被拉伸,默认是250。
     - Content Compression Resistance Priority: 该优先级和上面那个优先级相对应,表示一个控件抗压缩的优先级。优先级越高,越不容易被压缩,默认是750


切换表情键盘

    /**
    切换表情键盘
    */
    func inputEmoticon()
    {
        print(#function)
        // 结论: 如果是系统自带的键盘, 那么inputView = nil
        //      如果不是系统自带的键盘, 那么inputView != nil
//        print(textView.inputView)

        // 1.关闭键盘
        textView.resignFirstResponder()

        // 2.设置inputView
        textView.inputView = (textView.inputView == nil) ? emoticonVC.view : nil

        // 3.从新召唤出键盘
        textView.becomeFirstResponder()
    }

==与isEqual的区别

==运算符只是简单地判断是否是同一个对象,即对象的地址是否相等 ,而isEqual方法可以判断对象是否相同, 例如UIColor对象表示的color是否相同

cell点击展开关闭动画效果

1、
    模型修改cell的高度,调用方法
         [tableView beginUpdates];
         [tableView endUpdates];
2、
可以在点击时加入
///显示
        NSMutableArray *indexPaths = [NSMutableArray array];
        for (int i = 0; i < model.students.count; i++) {

            [indexPaths addObject:[NSIndexPath indexPathForItem:i inSection:section]];
        }
        [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

/// 删除
        [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

pop动画必设属性设置

/*基础动画*/
POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha];
anim.fromValue = @(0.0);
anim.toValue = @(1.0);
[view pop_addAnimation:anim forKey:@"fade"];

/*弹性动画*/
POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 400, 400)];
[layer pop_addAnimation:anim forKey:@"size"];

            【弹性动画相关属性设置】
springBounciness:4.0    //[0-20] 弹力 越大则震动幅度越大
springSpeed     :12.0   //[0-20] 速度 越大则动画结束越快
dynamicsTension :0      //拉力  接下来这三个都跟物理力学模拟相关 数值调整起来也很费时 没事不建议使用哈
dynamicsFriction:0      //摩擦 同上
dynamicsMass    :0      //质量 同上
【注意:POPSpringAnimation是没有duration字段的 其动画持续时间由以上几个参数决定】


/*衰减动画*/
POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX];
anim.velocity = @(1000.);
[layer pop_addAnimation:anim forKey:@"slide"];
                【可配置属性】
deceleration:0.998  //衰减系数(越小则衰减得越快)

【注意:这里对POPDecayAnimation设置toValue是没有意义的 会被忽略(因为目的状态是动态计算得到的)<br>
注意:POPDecayAnimation也是没有duration字段的 其动画持续时间由velocity与deceleration决定】

/*自定义动画*/
POPAnimatableProperty *prop = [POPAnimatableProperty propertyWithName:@"prop" initializer:^(POPMutableAnimatableProperty *prop) {
    // read value
    prop.readBlock = ^(id obj, CGFloat values[]) {

    };
    // write value
    prop.writeBlock = ^(id obj, const CGFloat values[]) {

    };
    // dynamics threshold
    prop.threshold = 0.01;
}];
【其组成就是一个readBlock一个writeBlock和一个threashold

readBlock告诉POP当前的属性值
writeBlock中修改变化后的属性值
threashold决定了动画变化间隔的阈值 值越大writeBlock的调用次数越少】

xib创建tableView的Header约束报错

    ///  xib创建tableView的header时需要在外面包裹一层view,否则会报约束错误的问题


UIView *baseHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,SCREEN_WIDTH , 250)];
self.headerView = [[[NSBundle mainBundle]loadNibNamed:@"HAIMineHeaderView" owner:nil options:nil] firstObject];
self.headerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 250);
[baseHeaderView addSubview:self.headerView];
self.tableView.tableHeaderView = baseHeaderView;

tabbar设置item时,排版问题。

有title的会被排放在最后面,没有title的会被放到前面,注意一下,应该设置self.navigationItem.title

Autolayout对多行文本Label进行布局,高度不准确的解决办法

如果是计算多行UILabel,并且width不是固定的话(自动布局适配屏幕就是不固定,写死的数值算固定),需要设置label的preferredMaxLayoutWidth属性,否则计算的结果会有偏差!

textView自动计算高度

textView的scrollEnable属性设置为NO,这样的话,textView的高度约束>=120,这样就会进行自动计算了.

collectionView流水布局flow,item等宽,间距相等

需要设置contentInset左右间距和margin相等

物理仿真器 UIDynamicAnimator

金钱金额不用float和double

  • 精确度问题,不使用float和double,*/ 都会改变精度

聊天或者评论界面的布局设计

    1.tableview 顶部约束为0 ,评论框 与tableView 四周约束为0 ,这时,当键盘弹起的时候 tableView的视图不会产生变化,会有tableView的cell被键盘挡住的现象
    2.tableView 顶部约束不设置,设置tableView的高度 = 屏幕高度- 键盘工具栏的高度.这时,当键盘弹起的时候 tableView的视图会从当前cell 处向上弹起,不会又被键盘挡住的现象,可是当tableview中的数据较少时,会有整体向上移动,导致数据也向上移动的情况.

IQKeyboardManager

1:IQKeyboardManager在需要解决键盘遮挡时会去递归找可滚动的父视图进行偏移,如果没有就对window的frame做文章
2:核心方法是adjustFrame,通过它解决键盘遮挡

tableView下拉,头像放大

原理很简单,就是在UITableview上边添加一个图片子视图,在tableview拖动的时候动态的改变图片的frame,就可以实现这个效果。

Swift和OC混编

1.创建桥接文件.h
    .h文件名:  项目名-Bridging-Header.h
    里面的内容:  #import <UIKit/UIKit.h>
2.Build Settings ->  Use Legacy Swift Language Version:把后面的改成YES即可。

3.XCode -> Edit -> Convert -> To Current Swift Syntax...

4.直接导入swift文件  ->  #import 项目名-Swift.h

tableviewCell 左滑多个按钮

1.首先UITableViewDataSource重写这个方法,系统就会自动添加这种操作。
- (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath
2.ios8.0 之后苹果开放了这样一个API:
-(nullable NSArray
*)tableView:(UITableView*)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
返回一个UITableViewRowAction数组,每一个"Action"代表一个侧滑删除的Button。这样侧滑每一行Cell可以有更多按钮提供给用户交互。
- http://www.cocoachina.com/ios/20151118/14243.html

ios 11 之后

    1.NavBar的titleView支持autoLayout
这要求titleView必须是能够自撑开的或实现了- intrinsicContentSize

- (CGSize)intrinsicContentSize {
    return UILayoutFittingExpandedSize;
}
    2.安全区域概念
if (@available(iOS 11.0, *)) {
    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
    self.automaticallyAdjustsScrollViewInsets = NO;
}
- http://www.jianshu.com/p/efbc8619d56b  iOS 11 安全区域适配总结

    3.大标题
    iOS11导航栏多了一个LargeTitleView,专门显示大字标题用的,整个导航栏的高度达到了96p,比之前的导航栏多了32p,不过,大字标题默认是关闭的,所以一般情况下,导航栏的高度还是64p

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,090评论 4 62
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,365评论 7 249
  • 突然有种感觉,大姑娘真的是一天一个样。继上周我一个人带她洗澡没有哭。想着在家里玩水也是很开心的。还是要带她去游泳啊...
    大果果ly阅读 153评论 0 0
  • 寒冬 十二月天, 零下三十度严寒, 冬的气息肆意弥漫。 儿时生满冻疮的手清晰可忆, 寒冬的课堂里总有炉火相伴, 深...
    我是Linny阅读 225评论 2 3
  • 日本茶道鼻祖 千利休 他喜欢低调,质朴,不张扬的事物。一生忠爱于简洁,朴素,单纯的美。他打破了...
    岳亚楠阅读 1,121评论 0 0