Ios 通过编程设置图像高度时,图像高度不起作用
我通过编程设置图像的高度。但它只能在iPhone SE上正常工作。但在iphonex上就不是这样了 以下是截图:Ios 通过编程设置图像高度时,图像高度不起作用,ios,swift,Ios,Swift,我通过编程设置图像的高度。但它只能在iPhone SE上正常工作。但在iphonex上就不是这样了 以下是截图: 现在让我们看一下我的代码。正如你们所见,我通过编程设置了图像的x和y位置。还有高度和宽度 let kint = skrolas.frame.height // Here's my scrollView frame vienas.frame = CGRect(x: 8, y: 17, width: screenWidth-42, height: kint) // Here
现在让我们看一下我的代码。正如你们所见,我通过编程设置了图像的x和y位置。还有高度和宽度
let kint = skrolas.frame.height // Here's my scrollView frame
vienas.frame = CGRect(x: 8, y: 17, width: screenWidth-42, height: kint) // Here I set my first image programatically. I want height to be the same like my scrollView height.
let dydis2 = vienas.frame // Here's my first picture frame
du.frame = CGRect(x: (dydis2.origin.x+(screenWidth-42)+8), y: 17, width: screenWidth-42, height: kint) // Here's my second picture
let dydis3: CGRect = du.frame
trys.frame = CGRect(x: (dydis3.origin.x+(screenWidth-42)+8), y: 17, width: screenWidth-42, height: kint) // And thirt picture
正如你所见,我的宽度正常工作。但我的身高不是。我不明白为什么。正如我在代码中提到的,我将图像高度设置为与scrollView相同
在iPhone XS上,我的滚动视图如下所示:
以下是我项目的链接:
问题1:应该使用自动布局约束,而不是显式设置框架 问题2:您正在
viewdiload()
中设置帧大小,这在进行任何布局之前是,因此您无法访问实际的屏幕宽度和高度
问题3:你有一个“上传另一张照片”的选项,所以我猜你最终可能会想展示很多照片。使用您的方法,您将很快遇到内存问题
您可能应该考虑使用UICollectionView
。这将使您能够“自动”水平滚动,并将更有效地使用内存--您可以滚动很多很多图像而不会出现问题
不过,要查看大小调整问题,第一步是将大小调整代码从
viewdiload()
移动到viewdilayoutsubviews()
,这样就可以获得正确的大小值。为什么不使用Autolayout
?设置帧的代码在哪里调用?如果您想使用滚动功能显示多个图像,请使用集合视图来实现这一点。您是否在viewdiload()
中设置图像视图帧?@DonMag是的,我在viewdiload()中设置。@DonMag还为我的项目指定了链接。viewdilayoutsubviews()就是这种情况。无论如何,我尝试使用UICollectionView。老实说,一开始我担心这太复杂了,但看起来要简单得多。非常感谢。我将把这个答案标为正确。你给了我两个解决方案。非常感谢。
@IBOutlet weak var skrolas: UIScrollView!
public var screenWidth: CGFloat {
return UIScreen.main.bounds.width
}
public var screenHeight: CGFloat {
return UIScreen.main.bounds.height
}