我很难弄清楚如何在DetailView故事板中动态定位对象。
对于初学者来说,该应用程序遵循传统的博客格式,其中MasterView是具有多个帖子的UITableView(或UICollectionView)。
当用户点击其中一个时,segue会指向DetailView。
除了在DetailView中定位元素外,所有内容都正确加载。
它的外观如下:
顶部UIImageView
的高度固定,因此不会与Post Text Label
重叠。
但是,Post Text Label
的高度可变,因为一些帖子文本比其他文章更长。这由我正在使用的类别处理,动态调整大小(resizeToFit
)。这一切都很有效。
现在的问题是,当Post Text Label
垂直增长时,我需要View - Byline
(绿色矩形)根据Post Text Label
的垂直尺寸向下移动。我无法让它向下移动。
您可以看到我将所有View - Byline
个对象放置在一个视图中,因此它们只通过定位View - Byline
以编程方式更改位置一起移动。
你知道我可以用什么方法来实现这个目标吗?任何指针,教程或智慧都非常感谢。
DetailViewController.h
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController {
IBOutlet UIImageView *postThumbView;
IBOutlet UILabel *postTextLabel;
IBOutlet UIImageView *postAuthorPictureView;
IBOutlet UILabel *postAuthorNameLabel;
IBOutlet UILabel *postTimestampLabel;
IBOutlet UIScrollView *scroller;
IBOutlet UIView *postBylineView;
}
@property (strong, nonatomic) id detailItem;
@end
DetailViewController.m
...
[postThumbView setImageWithURL:[NSURL URLWithString:postThumbUrl] placeholderImage:[UIImage imageNamed:@"default"]];
[postAuthorPictureView setImageWithURL:[NSURL URLWithString:authorPicture] placeholderImage:[UIImage imageNamed:@"default"]];
postTextLabel.text = postText;
postTextLabel.frame = CGRectMake(postTextLabel.frame.origin.x,
postThumbView.frame.origin.y + postThumbView.frame.size.height,
postTextLabel.frame.size.width,
postTextLabel.frame.size.height);
[postTextLabel resizeToFit];
postAuthorNameLabel.text = postAuthorName;
postTimestampLabel.text = postTimestamp;
答案 0 :(得分:2)
如果您定位ios6,则应检查自动布局限制。如果没有,您不能使用与重新定位postTextLabel相同的方法。因此对于postByLine,将其相对于post textBabel的底部进行定位。
postByLine.frame = CGRectMake(postByLine.frame.origin.x,
postTextLabel.frame.origin.y + postTextLabel.frame.size.height,
postByLine.frame.size.width,
postByLine.frame.size.height);
答案 1 :(得分:0)
我认为阅读post recommended by @edwin对了解AutoLayout很重要。
例如,虽然我的故事板中有AutoLayout ON,但元素并没有按预期调整其位置。
问题(在上面链接的帖子中解决)是AutoLayout希望您最初将元素放置在一定距离阈值内彼此相邻,否则它不会创建(并维护)它们之间的关系。
如果您查看我上面的原始帖子,您会看到绿色矩形(帖子后缀)。随着帖子文字的垂直尺寸增加,它没有向下移动。
那是因为当我最初创建了署名框时,我把它放在了帖子文字标签底部边界的附近。一旦我将它拖得更近,两个元素之间就会出现一个h形图标,表示已建立关系。
然后一切都按预期工作。大多数默认距离阈值大约为8点,但是一旦建立了关系,您可以稍后根据需要增加距离。