【发布时间】:2018-08-13 10:03:50
【问题描述】:
我之前曾在这里提问How to make full screen background image inside ScrollView and keep aspect ratio 并从“ekscrypto”得到很好的回答,再次感谢您。
我在图像上有带有文本的按钮(1、2、3、4、5 等)以前我使用硬编码的 X 和 Y 坐标来定位背景图像上的 UI 元素(按钮),这个解决方案适用于所有iPhone 设备,而不是 iPad。 我根据从“ekscrypto”收到的解决方案更改了我的代码,现在这个解决方案当然不适用于任何设备。
图片上有一条路,我需要在这条路上安排这些按钮。无论设备和图像比例如何,我如何才能相对于图像正确定位此按钮?
附: Ekscrypto 也提供了 UI 元素定位的解决方案,但我不明白它是如何工作的。
这是我目前尝试创建按钮的方式:
let imageOne = UIImage(named: "level1") as UIImage?
let levelOne = UIButton(type: UIButtonType.system)
levelOne.frame = CGRect.init(x: 10, y: 10, width: 100, height: 45)
levelOne.setImage(imageOne, for: .normal)
scrollView.addSubview(levelOne)
但 iPhone 和 iPad 的按钮位置和大小应该不同。我怎样才能让它们相对于图像正确放置?
非常感谢 ekscrypto,很抱歉延迟回答。您的代码正在运行,并且解决了我的问题,但是有一个小问题。
必须将这一行 let button = UIButton(type: .system) 更改为 .custom,或者将背景图像改为蓝色填充按钮。
带有背景图片的按钮太大,特别是在 iPhone 5 上,将 let backgroundDesignHeight: CGFloat = 330.0: CGFloat = 330.0 改为 730 以使其更小
iPhone 和 iPad 上的所有按钮都在同一个位置,除了«plus devices»,底部(向下)按钮的偏移量应该稍高
- 在某些设备上,按钮上的背景图像有点模糊,这是在我将 backgroundDesignHeight 更改为 730 后发生的
【问题讨论】:
-
没有可以在这里提供帮助的 iOS 人员?
-
由于您的 UI 是在代码中创建的,您能否展示您当前尝试创建按钮的方式?
-
ekscrypto 感谢您的帮助。代码如下: let imageOne = UIImage(named: "level1") as UIImage? let levelOne = UIButton(type: UIButtonType.system) levelOne.frame = CGRect.init(x: 10, y: 10, width: 100, height: 45) levelOne.setImage(imageOne, for: .normal) scrollView.addSubview(一级)
-
我在下面添加了我的答案。让我知道是否需要进一步澄清或是否给您带来麻烦
-
如果您想避免图像模糊,您需要创建适合各种设备大小的自定义按钮图像。使用单个图像并在代码中调整它的大小有时看起来不太好。如果您的按钮只有一组图像,请将其放大,以便在缩放时可以使用更多数据。