Ios 如何在swift中以编程方式在任何屏幕方向上保持一个方面固定的UIView填充屏幕?
我只想要这个简单的效果: 我有一张图片会根据设备/屏幕方向自动定位,它总是填满整个屏幕,而不会拉伸自己,这样外观就不会改变 我使用Xcode虽然我在storyboard和UI builder上得到了很多答案,但我真的不喜欢这样的工作方式,但是你不知道它是如何工作的,所以我试图找到一种以编程方式完成的方法 我曾尝试将图像视图设置为子视图,但在设备旋转后,它无法很好地修复,它要么拉伸以填充屏幕,要么移动到其他位置而大小不变(当我尝试重新计算帧并应用于子视图时),然后我尝试覆盖UIView的drawrect func,该帧工作正常,但旋转动画被破坏(它在旋转过程中自行拉伸,然后跳到最后一帧) 我想要的完美效果就像iOS原始照片应用程序一样,当我检查一张照片时,它会调整大小以修复屏幕,甚至当我旋转屏幕时,动画效果也非常完美,旋转和缩放同时发生,不会发生拉伸跳过。谁能帮我一下吗 谢谢 我设置框架的方式:Ios 如何在swift中以编程方式在任何屏幕方向上保持一个方面固定的UIView填充屏幕?,ios,swift,uiview,uiviewcontroller,uiviewanimation,Ios,Swift,Uiview,Uiviewcontroller,Uiviewanimation,我只想要这个简单的效果: 我有一张图片会根据设备/屏幕方向自动定位,它总是填满整个屏幕,而不会拉伸自己,这样外观就不会改变 我使用Xcode虽然我在storyboard和UI builder上得到了很多答案,但我真的不喜欢这样的工作方式,但是你不知道它是如何工作的,所以我试图找到一种以编程方式完成的方法 我曾尝试将图像视图设置为子视图,但在设备旋转后,它无法很好地修复,它要么拉伸以填充屏幕,要么移动到其他位置而大小不变(当我尝试重新计算帧并应用于子视图时),然后我尝试覆盖UIView的drawr
func locating (imgsize:CGSize,scrsize:CGSize) ->CGRect {
var size:CGSize
var ori:CGPoint
if ((imgsize.height / imgsize.width) * scrsize.width>=scrsize.height){
size = CGSize(width:scrsize.width,height:imgsize.height*(scrsize.width/imgsize.width))
ori = CGPoint(x:0,y:scrsize.height-imgsize.height*(scrsize.width/imgsize.width))
}
else {
size = CGSize(width:imgsize.width*(scrsize.height/imgsize.height),height:scrsize.height)
ori = CGPoint(x:-(imgsize.width*(scrsize.height/imgsize.height)-scrsize.width)/2,y:0)
}
return CGRect(origin:ori,size:size)
}除了数学以外!这里也有一些解决方案,可以为你工作
- 将图像宽度和高度设置为superview宽度和高度
self.imageView.frame=self.imageView.superView?.bounds
- 然后将
imageView的
属性设置为contentMode
或aspectFill
aspectFit
self.imageView.contentMode=UIViewContentModeScaleAspectFit代码>
self.imageView.contentMode=UIViewContentModeScaleAspectFill代码>