2014-04-12 70 views
0

我正在以編程方式創建具有3個標籤和圖像的我的UITableViewCells。 現在,我所有的標籤都是重疊的,單元格的高度是固定的。以編程方式約束表單元格中的UILabels

希望的效果是在左側具有固定尺寸的圖像,並且標籤從屏幕左側的75個點開始,每行一個。

下面是我打算:

_____ | | Label 1 | img | Label 2 with potentially multi-line text |_____| Label 3 我不知道,使標籤堆疊在彼此的頂部,有細胞調整圖的基礎上的三個標籤高度結合的最佳方式。

self.title = [[UILabel alloc] initWithFrame:frame]; 
[self.title setLineBreakMode:NSLineBreakByWordWrapping]; 
[self.title setTextColor:[UIColor colorWithRed:21/255 green:32/255 blue:48/255 alpha:1]]; 
[self.title setFont:[UIFont fontWithName:@"HelveticaNeue" size:14.0f]]; 
[self.title setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[self.title setNumberOfLines:0]; 
[self.contentView addSubview:self.title]; 

self.description = [[UILabel alloc] initWithFrame:frame]; 
[self.description setLineBreakMode:NSLineBreakByWordWrapping]; 
[self.description setTextColor:[UIColor colorWithRed:21/255 green:32/255 blue:48/255 alpha:0.7]]; 
[self.description setFont:[UIFont fontWithName:@"HelveticaNeue" size:12.0f]]; 
[self.description setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[self.contentView addSubview:self.description]; 
[self.description setNumberOfLines:0]; 

self.user = [[UILabel alloc] initWithFrame:frame]; 
[self.user setLineBreakMode:NSLineBreakByWordWrapping]; 
[self.user setTextColor:[UIColor colorWithRed:136/255 green:136/255 blue:136/255 alpha:1]]; 
[self.user setFont:[UIFont fontWithName:@"HelveticaNeue" size:10.0f]]; 
[self.user setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[self.user setNumberOfLines:0]; 
[self.contentView addSubview:self.user]; 

感謝

回答

0

您設置的所有三個標籤相同的幀座標。

self.title = [[UILabel alloc] initWithFrame:frame]; 

所以你必須爲每個標籤設置三個不同的框架。

self.title = [[UILabel alloc] initWithFrame:frame1]; 
self.title = [[UILabel alloc] initWithFrame:frame2]; 
self.title = [[UILabel alloc] initWithFrame:frame3]; 

其中frame1,frame2和frame3只有y座標值不同。

frame2 = [75,"any constant value",70,10]; 
frame2 = [75,label1.frame.origin.y + 5,70,10]; 
frame3 = [75,label2.frame.origin.y + 5,70,10]; 

可能這會幫助你。

2

由於您使用setTranslatesAutoresizingMaskIntoConstraints = NO我假設您要使用VFL。

在你的情況下,我認爲最簡單的方法是在你的XIB中設置Autolayout,但如果你沒有一個,你可以使用VFL。

你可以在這裏讀到它 - VFL

還是這裏的代碼樣本VFL Tutorial

好運

+0

VFL,很有前途。首先我聽說過它。 – n00bProgrammer

+0

感謝您的鏈接,我從來沒有明白如何寫這個。 XIBs自動佈局規則。 – Sulthan

相關問題