重新定位超出屏幕框架的视图
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】:计算imageWidth
和imageX
后,您可以进行如下检查:
[...]
var imageX = myButton.minX -
((myView.myImageView.bounds.width)/2) + 15
imageX = min(imageX, view.frame.width - imageWidth)
[...]
请注意,我将 imageX
从 let
更改为 var
。
【讨论】:
以上是关于重新定位超出屏幕框架的视图的主要内容,如果未能解决你的问题,请参考以下文章