使用自动布局在通用故事板中相对于 UIImage 定位 UILabel Xcode6
Position UILabel relative to UIImage in Universal Storyboard using Autolayout Xcode6
我正在实现一个自定义地图视图,我想在其中的 UI 图像上添加多个 UI 标签。以下是视图层次结构:
当我在 iPhone 和 iPad 上预览它时,UILabel 保持相对于 SuperView 但我想保持它相对于 UI图像,因此无论设备是什么,标签都应始终带有 Groovy 空间。
我可以在 UIImage 上绘制文本,但在我的场景中这是一个非常昂贵的操作,因为我的 View 将被加载一次并且我需要经常更新标签。
下面是当前UI:
如图所示,标签没有留在 Groovy 房间内,而是离开了。
您需要将 UILabel 固定到您希望其相对布局的 UIImageView 的前导左侧和顶部。将引脚偏移设置为您希望的相对 x 和 y。
评论后更新
如果您有一个将填满屏幕的大图像并且您想要定位多个标签,我认为您将不得不在代码中进行定位。我这样说的原因是,对于不同的屏幕尺寸,您需要更改图像显示的点。
建议是|
1) 对于您的地图,创建一个 table 包含每个房间中心的相对位置。例如。房间 1 的中心横跨 25%,向下 10%。然后放在一个数组中。您现在可以定义每个房间的中心,而不管屏幕大小。
2) 在您的 viewDidLoad 方法中,创建您的 UILabel 并将它们放入一个由房间号索引的数组中。将标签添加到您的主视图。如果你有一个确切的数字并分配你可以放在一个数组中的 IBOutlets,你可以在情节提要中做到这一点。
3) 实施 layoutSubviews 并在其中将每个标签的中心设置为房间的中心加上一个偏移量,以便它显示在房间标签下方。先调用超级版本。使用 UILabel 框架的中心 属性 可以简化此操作。在 layoutSubviews 中执行此操作应该可以解决系统自身添加的约束的任何问题。
这应该可以让您处理所有屏幕尺寸的标签,因为您正在编码相对于图像的标签位置。当 运行 将此相对位置转换为实际点时。
我正在实现一个自定义地图视图,我想在其中的 UI 图像上添加多个 UI 标签。以下是视图层次结构:
当我在 iPhone 和 iPad 上预览它时,UILabel 保持相对于 SuperView 但我想保持它相对于 UI图像,因此无论设备是什么,标签都应始终带有 Groovy 空间。
我可以在 UIImage 上绘制文本,但在我的场景中这是一个非常昂贵的操作,因为我的 View 将被加载一次并且我需要经常更新标签。
下面是当前UI:
如图所示,标签没有留在 Groovy 房间内,而是离开了。
您需要将 UILabel 固定到您希望其相对布局的 UIImageView 的前导左侧和顶部。将引脚偏移设置为您希望的相对 x 和 y。
评论后更新
如果您有一个将填满屏幕的大图像并且您想要定位多个标签,我认为您将不得不在代码中进行定位。我这样说的原因是,对于不同的屏幕尺寸,您需要更改图像显示的点。
建议是|
1) 对于您的地图,创建一个 table 包含每个房间中心的相对位置。例如。房间 1 的中心横跨 25%,向下 10%。然后放在一个数组中。您现在可以定义每个房间的中心,而不管屏幕大小。
2) 在您的 viewDidLoad 方法中,创建您的 UILabel 并将它们放入一个由房间号索引的数组中。将标签添加到您的主视图。如果你有一个确切的数字并分配你可以放在一个数组中的 IBOutlets,你可以在情节提要中做到这一点。
3) 实施 layoutSubviews 并在其中将每个标签的中心设置为房间的中心加上一个偏移量,以便它显示在房间标签下方。先调用超级版本。使用 UILabel 框架的中心 属性 可以简化此操作。在 layoutSubviews 中执行此操作应该可以解决系统自身添加的约束的任何问题。
这应该可以让您处理所有屏幕尺寸的标签,因为您正在编码相对于图像的标签位置。当 运行 将此相对位置转换为实际点时。