swift - 以自定义垂直距离水平居中子视图 | 迅速
问题描述
我有以下子视图,我想在屏幕上水平居中并手动设置垂直距离。
let customImageView = AnimationView(name: "image")
customImageView.frame = CGRect(x: -140, y: 40, width: 700, height: 700)
customImageView.contentMode = .scaleAspectFill
self.view.addSubview(customImageView)
如果手机的屏幕尺寸较小,是否可以确保设置的垂直距离会考虑在内。
解决方案
这听起来像是自动布局(https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/index.html)的工作,这是苹果基于约束的系统,专门用于动态调整视图大小与其他视图和屏幕尺寸的关系。在您的情况下,您可以将大于/小于限制设置为视图和子视图的顶部,这样如果屏幕更大/更小,它将至少具有一定的间距,并且可以选择增加。
如果您仍想进行基于框架的布局(例如创建 CGRect/框架),您必须自己根据 view.frame.size.height 值进行计算。请注意,视图控制器的视图框架在viewDidLayoutSubviews
调用之前可能未设置。
推荐阅读
- ansible - 使用 Ansible 在 fstab 中进行双重输入
- javascript - vue.js 将 getter 和 setter 添加到后期绑定属性
- java - 使用自定义适配器 sql 在我的列表视图上没有数据
- sql - 范围之间的块输入值的 SQL 查询
- json - 如何在 Postman 的不同集合中存储和重用模式?
- c - clang-analyze:如何避免“垃圾值”警告?
- java - 安卓写txt
- asp.net-mvc - 使用 Linq Any() 时出现 MVC Razor 语法错误
- android-management-api - 使用 setupActions 关键字在 Android Management API 注册期间未启动自定义 Android 应用
- javascript - 查找 hh:mm:ss 的时间平均值