美文网首页
iOS11 tableViewHeader 滑动tableVie

iOS11 tableViewHeader 滑动tableVie

作者: 烟影很美 | 来源:发表于2018-01-17 15:26 被阅读381次

    Bug如图所示:


    image.gif

    这个Bug应该是由于iOS11新增的安全区功能出现的, 上图中青色背景ImageView约束如下:


    36012E0F-EB2A-444C-8514-CFD3373DCE58.png

    可以看到iOS11把相对父View的约束都变成了相对安全区的约束, 而状态栏对应的安全区和我们的目标布局冲突. 我尝试过修改安全区, 结果并不理想. 目前的解决方法是尽量不要使用上边相对安全区的约束, 比如改成下面这样:


    52A2606C-FA69-4CC2-818C-16416D02C69E.png

    同时由于所有的UILabel都是相对icon布局, 所以我只要改动icon的约束就可以.

    修改前:


    35B85356-61A8-43B6-9FC9-0F9CC1FE8338.png

    修改后:


    77E4FD61-3D11-42BE-82AB-31912B78585A.png

    最终效果:


    xiugaihou.gif

    /=============华丽的分割线=============/
    iOS11之前'vc.automaticallyAdjustsScrollViewInsets'修改为了'scrollview.contentInsetAdjustmentBehavior'. 在ScrollView内容向下偏移20或64像素的时候, iOS11需要设置'scrollview.contentInsetAdjustmentBehavior'. 下面是来自一位大神(查不到了...)一个适配的宏

    #define  adjustsScrollViewInsets_NO(scrollView,vc)\
    do { \
    _Pragma("clang diagnostic push") \
    _Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
    if ([UIScrollView instancesRespondToSelector:NSSelectorFromString(@"setContentInsetAdjustmentBehavior:")]) {\
    [scrollView   performSelector:NSSelectorFromString(@"setContentInsetAdjustmentBehavior:") withObject:@(2)];\
    } else {\
    vc.automaticallyAdjustsScrollViewInsets = NO;\
    }\
    _Pragma("clang diagnostic pop") \
    } while (0)
    

    相关文章

      网友评论

          本文标题:iOS11 tableViewHeader 滑动tableVie

          本文链接:https://www.haomeiwen.com/subject/umkuoxtx.html