2014-09-10 87 views
1

我在构建应用程序时第一次学习iOS。在要求之一,UITableViewCell需要看起来像
enter image description here (PS:这只是一个设计,没有代码为这个写的)iOS CustomTableViewCell:元素没有正确对齐

然而,当我设计我UITableViewCell,它看起来像

enter image description here
enter image description here enter image description here enter image description here

和代码生成这个样子

- (void)setTransactionCell:(TransactionCell *)transactionCell transactionModel:(TransactionModel *)transactionModel { 
    transactionCell.dateOfMonth.image = [self getDayImage:[UIImage imageNamed:@"1"]]; 
    transactionCell.dayOfWeek.image = [self getDayImage:[UIImage imageNamed:@"Sun"]]; 

    transactionCell.name.text = transactionModel.name; 
    transactionCell.name.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:15]; 

    transactionCell.amount.text = transactionModel.amount; 
    transactionCell.amount.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:15]; 

    transactionCell.categoryImage.image = [self getCategoryImage:[UIImage imageNamed:transactionModel.category]]; 
    transactionCell.imageView.contentMode = UIViewContentModeCenter; 
} 

- (UIImage *)getDayImage: (UIImage *) image { 
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(30, 30), NO, 0); 
    [image drawInRect:CGRectMake(0, 0, 15, 15)]; 
    UIImage *im2 = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return im2; 
} 

- (UIImage *)getCategoryImage:(UIImage *)image { 
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(40, 40), NO, 0); 
    [image drawInRect:CGRectMake(0, 0, 36, 36)]; 
    UIImage *im2 = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return im2; 
} 

最后当我运行应用程序,我看到
enter image description here

我是相当新的,不知道是怎么了。我拼命尝试拖拽标签和图像到每个可能的组合,但没有任何工作。我错过了一些非常基本的东西,你能指导一下什么是错的吗?

回答

1

xibs上的对象每个对象至少需要4个约束。当标签/ UIImageView对象周围出现橙色线条时,这意味着约束丢失或冲突,并且通常意味着图像在运行时不会像您期望的那样显示。

对约束进行排序的最简单方法是使用界面生成器。首先,我建议选择每个对象并通过从IB底部的图标行中选择选项来清除当前约束(请参阅下面的图片)

enter image description here

一旦这个已被清除,增加新的约束再次选择对象,然后选择左侧的图标,你用来清除限制(跨一个一个 - 见挑)

在这幅图中,您会看到一个弹出窗口,让您可以选择添加约束,在这种情况下,我选择了UILabel的顶部和左侧的空间约束到他们最近的顶部和左侧的对象。您可以通过为特定约束选择弹簧来实现此目的,并且这会变成橙色以显示它已被选中。 (这满足了所需的最小4个约束中的两个)。接下来的两个约束(因为我不希望UIlabel在那里调整大小)是约束高度和宽度。 (放入框中打勾选择每个)

enter image description here

这必须是可重复的,你有你的厦门国际银行每一个UI对象。一旦有适当的约束,该线将全部是蓝色的,这意味着没有警告(见PIC下面 - 的UIImageView的约束高亮蓝)

enter image description here

我希望这可以帮助你,但我建议你详细了解自动布局约束。他们可以是非常有用的,当你得到他们的hang and,甚至可以是动画等等等等

+0

非常感谢吉姆,你的回答帮助我非常整齐地理解这一点,我甚至没有看到任何其他的自动布局,并能设计http://imgur.com/aJiPuTt。再次感谢 – daydreamer 2014-09-11 16:47:21