创建Instagram的类似照片饲料
我试图做一个程序,我正在做,类似于Instagram的的照片饲料:创建Instagram的类似照片饲料
我使用一个UITableView创造了一个初稿对于饲料来说,但它正在成为处理每个细胞动态性质的麻烦。喜欢和评论以及评论文本本身的数量将决定单元格的高度。我使用UITextViews绘制注释和文本,并使用UITextViews的sizeWithFont文本近似单元格高度和位置。这个解决方案似乎非常不精确,并且有很多缺点。
我想使用一个UIWebView为整个进料作为备用溶液。这将使定位像和评论文本非常简单,以及在Instagram中看到文本中具有可变字体的能力。我还没有真正使用过UIWebViews,所以我不确定通过这种方式创建整个Feed有多么简单或难。
我应该继续用我的UITableView溶液或看看它全部采用一个UIWebView重做?
在我的应用程序,我有一个UITableViewCell是动态调整基于文本的单元格中的量的高度。我认为这可能有助于回答你的问题。
这里的窍门:有没有必要“近似的文字大小” ---检查出documentation的方法[NSString sizeWithFont: constrainedToSize: lineBreakMode:]
maximumSize = CGSizeMake(self.contentView.bounds.size.width - TEXT_LEFT_MARGIN * 2.0,
MAXIMUM_TEXT_HEIGHT);
textStringSize = [textLabel.text sizeWithFont:textLabel.font
constrainedToSize:maximumSize
lineBreakMode:textLabel.lineBreakMode];
因此,让我们要将上面的空白为10个像素一个简单的例子标签以及标签下面的15个空白字符。那么你生成与上述测量值的CGRect
,随着加入到上述生成的textStringSize.height
值的25个像素的高度。
使用这种方法意味着你的UITableViewCells将放大和缩小很好,无论在不同的标签注释的大小。
是的,这是我最终做的。我只是认为会有一个更好的解决方案,因为我的代码不是最好看的,因为所有的框架调整大小和定位在每个单元格中进行。 – sbezboro 2012-02-14 13:57:23
您的代码可以得到很多更好的管理,如果你避免硬编码的数字,而是使用'#define'设置你想周围的文本中使用的像素数。例如,我使用'#define kDefaultFontPadding 10;'来说明标签周围应该有10个像素的填充。希望能够帮助清理代码---这意味着您可以从多个地方引用该单一号码,然后通过在一个地方更改号码来轻松尝试不同的值。 – bryanjclark 2012-02-14 17:53:29
constrainedToSize在iOS7中折旧使用/建议弃用api的逻辑是什么? @sbezboro你可以使用boundingRectWithSize:options:attributes:context:来代替。 – iLearner 2014-04-30 06:26:35
试试这个..
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *[email protected]"item";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:simpleIdendifer];
if(cell==nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleIdendifer];
}
[[cell textLabel] setText:self.str];
[[cell textLabel] setNumberOfLines:0];
[[cell textLabel] setLineBreakMode:NSLineBreakByWordWrapping];
[[cell textLabel] setFont:[UIFont preferredFontForTextStyle:UIFontTextStyleBody]];
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//add your table view cell content here
NSString *string = self.str;
NSDictionary *attributes = @{NSFontAttributeName: [UIFont preferredFontForTextStyle:UIFontTextStyleBody]};
CGRect frame = [string boundingRectWithSize:CGSizeMake(CGRectGetWidth(tableView.bounds), CGFLOAT_MAX) options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) attributes:attributes context:nil];
return ceilf(CGRectGetHeight(frame)+TableViewCellPadding);
}
你能解释为什么你认为这是不准确的?这会帮助我理解你的问题。谢谢。 – Ryan 2012-01-17 17:22:07
这只是觉得奇怪的大约多少空间文本将占用,而不是使用实际大小。例如,在文本视图最初没有显示在确切的正确位置之前,我遇到了问题,但是在下载图像后重新载入表格时弹出到位。我已经解决了这个问题。 – sbezboro 2012-01-18 20:27:37