尽管阅读了诸如Windows 和 Views 指南之类的 Apple 文档,但我仍试图弄清楚这一点。
此屏幕截图最能说明我的问题:
如您所见,博客文章有一张高度可变的图片(但固定宽度 = 320px),它可能会或可能不会与其下方的视图元素重叠,这是一个标签。
与 CSS 类似,我需要 UIImageView 为“display:block”,以及标签。
因此,如果图像占据或多或少的垂直空间,下面的元素会相应地调整其位置。这只是以编程方式完成的吗?
我试图通过将每个视图放在单独的视图中来分层执行此操作,但无济于事。“剪辑子视图”未勾选。
非常感谢任何有关完成此操作的一般程序的建议或相关材料的链接。
控制器代码(postTextLabel 和 postPicture 是连接的 IBOutlets)
#import "DetailViewController.h"
@interface DetailViewController ()
- (void)configureView;
@end
@implementation DetailViewController;
@synthesize scroller;
- (void)viewDidLoad
{
[super viewDidLoad];
[self configureView];
CGRect label_frame = CGRectMake(postTextLabel.frame.origin.x,
postPicture.frame.origin.y + postPicture.frame.size.height,
postTextLabel.frame.size.width,
postTextLabel.frame.size.height);
postTextLabel.frame = label_frame;
}
- (void)configureView
{
if (self.detailItem) {
NSDictionary *post = self.detailItem;
NSString *postText = [post objectForKey:@"post_text"];
NSString *postAuthorName = [post objectForKey:@"post_author_name"];
postTextLabel.numberOfLines = 0;
postTextLabel.text = postText;
postAuthorNameLabel.text = postAuthorName;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *pictureUrl = [post objectForKey:@"post_picture"];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:pictureUrl]];
dispatch_async(dispatch_get_main_queue(), ^{
postPicture.image = [UIImage imageWithData:data];
});
});
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end