gpt4 book ai didi

IOS Autolayout - 以编程方式在 subview 的一条水平线中放置多个图像

转载 作者:行者123 更新时间:2023-11-29 01:27:38 27 4
gpt4 key购买 nike

我创建了一个 TableView 标题并向其添加了一个 subview 。我正在尝试将多个头像图像(固定宽度和高度)置于此 ui subview 的一行中。

最大图像数=max(预定义)。我想要拟合的图像数量是 n。

当最大图像数为 5 时,

n=1:

[............................图 1................................ ......]

n=2:

[....................图像 1.....图像 2.................]

n=3

[…………图片 1……图片 2……图片 3…………]

n=4

[...图片 1....图片 2....图片 3 ......图片 4...]

n=5

[.imag 1....imag2....imag3....imag4....imag5.]

即放置应该以等间距居中。

如何以编程方式实现此目的?

我可以通过 Storyboard来做到这一点,将最多的图像排成一排,并保持相等的前导和尾随空格,当n=1时,我将隐藏1,2,4和5

当n=2时,我会隐藏1,2,5

最佳答案

如果您可以针对 iOS 9 及更高版本的部署目标,请使用 UIStackView。它旨在处理这种情况。

如果您还不能这样做,可以使用以下算法。它不使用约束。

CGFloat tableWidth = ...; // This may change if you allow rotation.
CGFloat spacer = ...; // Amount of space between images goes here.
CGFloat imageWidth = images.count > 0 ? [[images[0] size] width] : 0.0;
CGFloat imageHeight = images.count > 0 ? [[images[0] size] height] : 0.0;
CGFloat totalWidth = images.count * imageWidth + (images.count - 1) * spacer;
CGFloat leftEdge = (tableWidth / 2.0) - (totalWidth / 2.0);

for (int i = 0; i < images.count; i++) {
UIImageView *iv = ...; // Create and configure with image[i].

CGRect frame = CGMakeRect(0, 0, imageWidth, imageHeight);
frame.origin.x = leftEdge + (i * imageWidth + i * spacer);
iv.frame = frame;
}

关于IOS Autolayout - 以编程方式在 subview 的一条水平线中放置多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836093/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com