2013-12-23 153 views
0

我想實現像tumblr這樣的標籤功能。我嘗試過使用UITextfield,並在textfield中爲tags_name添加了UIButtons。如何實現標籤功能,如tumblr

  1. 如何在第一個背面選擇標籤並在第二個背面將其刪除?
  2. 應該如何在UITextfield的多行添加標籤?

請爲此功能提出任何解決方案。 這裏是我如何在UItextfield中添加按鈕的代碼。

for (count_value = 1; count_value<=[textfieldarray count]; count_value++) 
    { 
     UIButton *button_dish = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [button_dish setTag:count_value]; 
     [button_dish.layer setOpacity:0.5]; 
     [button_dish.layer setCornerRadius:4.0f]; 
     [button_dish setUserInteractionEnabled:YES]; 
     [button_dish setShowsTouchWhenHighlighted:YES]; 
     [button_dish setContentMode:UIViewContentModeCenter]; 
     [button_dish setTitleEdgeInsets:UIEdgeInsetsMake(8, 8, 4, 8)]; 
     [button_dish.titleLabel setLineBreakMode:NSLineBreakByWordWrapping]; 
     [button_dish.titleLabel setFont:[UIFont fontWithName:@"Eau-SansBold" size:12]]; 
     [button_dish setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter]; 
     [button_dish setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter]; 
     [button_dish setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
     [button_dish setContentMode:UIViewContentModeScaleAspectFit]; 
     [button_dish setTitle:textfieldarray[count_value-1] forState:UIControlStateNormal]; 
     CGSize expected_Size1 = [textfieldarray[count_value-1] sizeWithFont:button_dish.titleLabel.font constrainedToSize:button_dish.frame.size lineBreakMode:NSLineBreakByWordWrapping]; 


     [button_dish addTarget:self action:@selector(buttonactionmethod:) forControlEvents:UIControlEventTouchUpInside]; 
     left_view_length1 = left_view_length1+expected_Size1.width+16+12; 

     [iconview1 setFrame:CGRectMake(0, 10, left_view_length1, 24)]; 
     [button_dish setFrame:CGRectMake(x_cordinate1, 2, expected_Size1.width+16, 20)]; 
     x_cordinate1 = x_cordinate1+expected_Size1.width+16+12; 

     [iconview1 addSubview:button_dish]; 
     [textfield1 setLeftView:iconview1]; 
    } 

這裏是tumblr標籤樣本參考圖像, 第一圖像顯示按鈕的上第一後選擇。 第二張圖片顯示了多行標籤。

enter image description here

enter image description here

請給我一些參考和提示。

+0

我反對投下這個問題。幾天前我會問同樣的事情,但還沒有嘗試過代碼。這傢伙有示例代碼和截圖。這是一個有效的問題。 –

+0

即使我不知道,在哪個基礎上人們投票的問題?如果問題沒有顯示任何努力,那麼它會。但在這兒 ? :-( –

回答

1

這將被稱爲「代幣字段」。他們首先出現在Mail.app中,並最終成爲AppKit框架的一部分。 Documentation here.

它應該是很容易重現在Cocoa Touch的外觀。在Cocoa Touch中,每個視圖都由Core Animation圖層支持,根據您的UI,圖層具有cornerRadius屬性。將該屬性設置爲字段高度的一半以創建圓角結束。如果平坦的外觀沒問題,您可以設置背景顏色,或者您可以繪製細微的漸變以提供更凸的外觀。

當然,如果你想要一個可重用的視圖,你可以在其中設置文本等,你只需要做所有的事情。如果你只需要其中的一些用於自定義按鈕或某些東西,那麼只需將它們繪製在最喜歡的繪圖程序中可能會更容易。

另一種可能性是使用第三方的控制,例如任何的:

引用此SO答案。