2010-09-28 68 views
3

我有一個項目列表,我想在UITableViewCell中顯示。現在,我只是用逗號分隔每個值的cell.textLabel,但我想做一些更動態的事情。如何顯示UILabels數組?

我將如何實現這樣的目標? alt text

它會是在邊界和半徑上的UILabels數組嗎?

感謝您的想法。

回答

1

這是一個可能的快速簡單的方法來做到這一點。它基於您可以獲得的代碼here

請注意,您必須將QuartzCore框架添加到您的項目幷包含在您編寫此代碼的文件中!

每個UIView都支持CALayer。您可以使用.layer屬性獲取UIView的CALayer。由於UILabel是一個UIView,你可以通過這種方式獲得它的支持層。一旦你有了背景層,你可以設置它的backgroundColor,cornerRadius,borderColor和borderWidth屬性。這應該讓你創建圓角的效果。

要獲得居中效果,請嘗試將UILabel的textAlignment設置爲UITextAlignmentCenter。然後,您可以嘗試基於sizeThatFits設置UILabel的框架,或者可以基於對放入標籤的字符串調用sizeWithFont。

下面是一些快速,完全未經測試的代碼,讓你開始。

假設你已經初始化一個UIFont的地方如下(把你想要的任何字體大小)。

labelFont = [UIFont systemFontOfSize:14]; 

然後,對於每個標籤,將其設置爲follows.I'm假設你拉出來的文本數組並投入一個名爲「文本」變量。 X_PADDING和Y_PADDING是標籤文本週圍的空間距離。 xLoc和yLoc是您用來跟蹤要放置標籤的x和y位置的變量。我們會根據TEXTSIZE + X_PADDING + LABEL_SPACING什麼的可能會增加XLOC(這裏定義LABEL_SPACING):

CGSize textSize = [text sizeWithFont:labelFont]; 
CGRect frame = CGRectMake(xLoc, yLoc, 
          textSize.width + X_PADDING, 
          textSize.height + Y_PADDING); 
UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
label.text = text; 
label.textAlignment = UITextAlignmentCenter; 

CALayer *layer = label.layer; 
layer.masksToBounds = YES; 
layer.cornerRadius = 7.0; // or whatever works for you 
layer.borderWidth = 1.0; 
layer.borderColor = [[UIColor redColor].CGColor; 
layer.backgroundColor = [UIColor blueColor].CGColor; 

// Add the layer into its superview 
[yourSuperview addSubview:label]; 

我希望這有助於讓你開始。

+0

謝謝!在這裏實現了按鈕與幾個視覺調整!http://stackoverflow.com/questions/4941940/best-way-to-avoid-memory-leaks-for-multiple-buttons-in-uitableviewcell – monotreme 2011-02-24 00:02:05