美文网首页
iOS中UIPopoverPresentationControl

iOS中UIPopoverPresentationControl

作者: xiacheng | 来源:发表于2019-08-05 20:12 被阅读0次

    最近工程中有使用到气泡弹出框的效果,故了解了一下UIPopoverPresentationController的使用,相关介绍可以看下官方文档PopOver
    这里主要纪录一下部分属性的的设置效果及使用过程中遇到的一些问题。
    部分属性说明
    1、sourceRect
    sourceRect 是相对于sourceView 的rect,和permittedArrowDirections共同确定箭头的显示位置。
    如permittedArrowDirections为UIPopoverArrowDirectionLeft的话,箭头顶点显示的位置为rect矩形右边边缘中心位置。

    2、preferredContentSize
    如果设置的PreferredContentSize 会超出屏幕,则超出屏幕的部分不会显示。
    当ContentSize 不能显示整个viewcontroller的view时,显示的部分为起点为(0,0),宽高为contentSize。

    遇到的问题
    一、由于是系统实现的默认效果,气泡为圆角,而自己遇到的情况需要实现其气泡为直角。尝试了几种方法,虽然没成功,还是在这里纪录一下。
    1、通过遍历视图层级,将所有的层级都设置为非圆角,但并未实现,通过调试,发现其显示气泡的视图层未被改变,但通过打印看到确实有遍历到那一层。
    暂时没有想明白其实现原理。

    001.png

    2、自定义popoverBackgroundViewClass
    通过自定义,可去掉阴影效果,也可以自定义箭头,边框的样式,也即上面图片箭头指向部分的样式。
    但是,仍然,无法去掉圆角,圆角是_UIPopoverView 的子视图设置的,而这个子视图只有在显示的时候才会被创建,无法提前给其去掉圆角。
    所以, 只能在-viewDidAppear中_UIPopoverView的子视图的cornerRadius设置为0,但这样由于是在视图显示出来后才修改的圆角,会有动画。
    最终通过在present气泡视图的时候将动画关掉,勉强实现了直角的效果。

        [UIView setAnimationsEnabled:NO];
        [self presentViewController:choseVc animated:YES completion:nil];
        [UIView setAnimationsEnabled:YES];
    

    相关文章

      网友评论

          本文标题:iOS中UIPopoverPresentationControl

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