重新定位超出屏幕框架的视图

Posted

技术标签:

【中文标题】重新定位超出屏幕框架的视图【英文标题】:Reposition view which is going out of screen frame 【发布时间】:2018-03-09 08:20:10 【问题描述】:

我在 UIView 中有一个 imageView,当点击该按钮时,它会显示在按钮顶部。按钮的位置是动态的。

如果按钮位于屏幕的最右侧,则在点击该按钮时,显示的一半视图将离开屏幕(即只显示一半)

在下面的代码中,我将视图的框架设置为图像的宽度和高度,imageView 的位置是(图像的中心在按钮的顶部中心)

请建议我如何重新定位,以使视图始终在边界内。下面是我用来在按钮顶部显示我的自定义视图的代码

       //calculate frame for view
        let imageHeight = myImage.size.height
        let imageWidth = myImage.size.width
        let imageX = myButton.minX - 
           ((myView.myImageView.bounds.width)/2) + 15
        let imageY = currentCellRect.minY - 
            (myView.myImageView.bounds.height) + 15
        let imageFrame = CGRect(x: imageX, y: imageY, width: 
             imageWidth, height: imageHeight)

        //Assign calculated from to the tool tip view
        toolTipView.frame = imageFrame

【问题讨论】:

我建议您对其应用约束,因为最终,您必须添加约束以在不同设备上使用 【参考方案1】:

计算imageWidthimageX 后,您可以进行如下检查:

[...]
var imageX = myButton.minX - 
           ((myView.myImageView.bounds.width)/2) + 15
imageX = min(imageX, view.frame.width - imageWidth)
[...]

请注意,我将 imageXlet 更改为 var

【讨论】:

以上是关于重新定位超出屏幕框架的视图的主要内容,如果未能解决你的问题,请参考以下文章

渲染视图中的自动布局不会更新其框架

弹出虚拟键盘时如何在 iOS 浏览器上重新定位视图?

如何在 iOS 中使用 swift 重新定位视图?

UIImageView 在 UIScrollView 内未正确定位

应用程序启动时视图的定位不同

相对于父视图的底部定位 UIView?