Objective c 将UILabel附加到图像缩略图底部(不同高度)

Objective c 将UILabel附加到图像缩略图底部(不同高度),objective-c,uilabel,Objective C,Uilabel,我有一个图像视图和标签视图。图像视图显示不同大小的图像,它固定在顶部(请参见图像)。我想动态地将文本标签粘贴到每个图像的底部,图像缩略图和UILabel之间没有任何空间 您可以通过编程实现。我假设您将UILabel附加到“label”上,并将图像附加到“imageView”变量上 CGRect labelFrame = label.frame; labelFrame.origin.y = imageView.frame.origin.y + imageView.frame.size.heigh

我有一个图像视图和标签视图。图像视图显示不同大小的图像,它固定在顶部(请参见图像)。我想动态地将文本标签粘贴到每个图像的底部,图像缩略图和UILabel之间没有任何空间


您可以通过编程实现。我假设您将UILabel附加到“label”上,并将图像附加到“imageView”变量上

CGRect labelFrame = label.frame;

labelFrame.origin.y = imageView.frame.origin.y + imageView.frame.size.height + any_space_you_want_between_image_and_label;

label.frame = labelFrame;

这将改变标签在imageView下方的位置。我希望这会有所帮助。

因为正如您所提到的,您在内容模式中使用了
UIViewContentModeScaleAspectFit
,解决方案会有点困难。 您必须实际计算图像的最终高度(UIImageView中图像的实际大小):


我猜您在图像上使用了
UIViewContentModeScaleAspectFit
?谢谢Andrei。我仍然要实现这一点,所以我将在验证后将其标记为正确答案。这看起来确实是正确的方法。谢谢Blackyte。您的解决方案与Andrei的解决方案相匹配,因此它必须是真实的。:)事实上他们不匹配(没有冒犯@BlackByte)。只要使用frame.height,您就会得到相同的值。@Andrei,frame.height是错误的。它必须是frame.size.height。很抱歉另一个是frame.origin.y.@BlackByte,对。但是,即使使用
frame.size.height
也始终可以获得帧的大小-要实际删除图像和标签之间的“尾随”空间,您需要获得UIImageView中图像的实际高度。@AndreiStoleru是的,我理解您的观点。然而,这取决于他是如何编写代码的。如果他用UImage动态创建UIImageView,那么每次都会有所不同。
    //UIImage *img = ...; UIImageView *imgView = ....
    CGFloat imageWidth = img.size.width;
    CGFloat imageHeight = img.size.height;
    CGFloat viewWidth = imgView.frame.size.width;
    CGFloat viewHeight = imgView.frame.size.height;
    float actualHeight = imageHeight * viewWidth / imageWidth;
// this is the actual height of the UIImage inside the UIImageView
    CGRect labelFrame = label.frame;
    labelFrame.origin.y = imageView.frame.origin.y + actualHeight + any_space_you_want_between_image_and_label;
    label.frame = labelFrame;