我以编程方式设置图像的高度。但它只能在iPhone SE上正常工作。但是,例如,在iPhone X上则不是。
以下是屏幕截图:
现在让我们看一下我的代码。如您所见,我以编程方式设置了图像的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相同。
我的scrollView在iPhone XS上看起来像这样:
这是我的项目的链接: DropBox
@IBOutlet weak var skrolas: UIScrollView!
public var screenWidth: CGFloat {
return UIScreen.main.bounds.width
}
public var screenHeight: CGFloat {
return UIScreen.main.bounds.height
}
答案 0 :(得分:1)
问题1:您应该使用自动布局约束,而不是显式设置框架。
问题2:您要在viewDidLoad()
中设置帧尺寸,该尺寸在发生任何布局之前 ,因此您无权访问实际的屏幕宽度和高度。
问题3:您有一个“上传另一张照片”选项,因此我猜测您可能最终想显示许多 张照片。使用您的方法,您将快速遇到内存问题。
您可能应该考虑使用UICollectionView
。这样可以使您“自动”进行水平滚动,并且可以更有效地使用内存-您可以滚动浏览很多图像而没有问题。
但是,要查看尺寸问题,第一步是将尺寸代码从viewDidLoad()
移至viewDidLayoutSubviews()
,您将获得正确的大小值。