ios - Xcode Interface Builder - 使复合地图多屏兼容
问题描述
得到一张由多个部分组成的地图:
每个部分都是UIButton
一个图像。我放置了所有东西来组成地图,它首先看起来很好。我遇到的问题是View
针对不同的屏幕尺寸调整大小。尝试使用 Autoresizing 和 Constraints,但无法让它看起来正确以最小化和最大化它。根据屏幕尺寸,这些部件应始终在一起并按比例放大/缩小。我通过调整 xib 的尺寸直接在 Interface Builder 中测试行为。
有效的是为每个箭头设置 autoresizingMask 中的所有箭头UIButton
并最大化视图。但是最小化它会扭曲地图。
不幸的是,这是我第一次在 Xcode 中使用 Interface Builder。在这里您可以找到源文件。谢谢!
编辑: 在 autoresizingMask 中仅设置宽度和高度的箭头可以在不失真的情况下缩小比例。升级会将零件分开。如何同时支持适当的放大/缩小?
Edit1:
替换了在界面生成器中正确调整大小UIButton
的每个!UIImage
请参阅此处的回购。不幸的是,在模拟器设备上,自动调整大小不同,地图部分不再粘在一起。将 Main.storyboard 中的 UIView 的大小设置为 xib 的大小,Autoresizing 可以完美地工作(在多个设备上测试)。但后来在“真实”项目中,我无法控制父母的视图尺寸。用这行代码玩了一点点,它似乎负责“阻止”自动调整大小。如何避免这种情况?提前致谢。我想我可能将 Autoresizing 与 AspectFit 混合在一起,这似乎没有任何效果。
解决方案
我想如果所有 Bundesländer 的图像都具有相同的大小,那会容易得多。将它们全部放在一个共同的视图中。给所有的按钮零填充到所有边。子类 UIButton 以检查触摸事件是否在非透明像素上。搜索“不规则按钮 ios”以了解更多信息。
我可以使用这些图像来实现这一点,这些图像具有相同的大小,添加了边框以显示大小
而这个约束
最重要的约束可能是 MapWrapper 上的 Aspect Ratio Constraint,即包含所有按钮的视图。
使用 Ole Begemann 的OBShapedButton
一些注意事项:
- 您的图像内容非常适合分解图形。将它们导出为 pdf 并将它们添加到您的资产中,例如单个比例
- 您不应该在图像中包含州名称,而应将其用作按钮标题。要正确定位它们,请使用标题插图。
示例项目:https ://github.com/vikingosegundo/germanStateSelection
推荐阅读
- sql - Oracle SQL Developer - 引用嵌套 from 语句中的字段时出错
- java - 为具有无界泛型的同质集合编写自定义反序列化器
- laravel - Laravel 电商项目使用 Aimeos 包
- c# - 如何通过用户输入使 DateTimePicker 不可编辑
- ios - 传输到 Apple M1 Xcode 显示错误“找不到‘FirebaseCore/FirebaseCore.h’文件”和“无法构建 Objective-C 模块‘Firebase’”
- javascript - useEffect 清理功能
- c# - 将发布配置文件 (.xml) 转换为 DacDeployOptions 类
- python - 为什么 XPath 计算错误的子字符串数量?
- c# - ASP.NET Core - 多种身份验证方案
- javascript - 将数组结果添加到字符串