2012-07-23 49 views
0

我想在我的應用程序是這樣的顯示:計算UILabel和UIButtons的大小來做一個句子?

通過喜歡@ USER1@ user2的3個

許多應用程序具有以下格式無論是喜歡誰張貼和他們的評論, 例如評論:@me耶蘋果是不錯的

當您點擊他們的名字,它需要你的地方在應用程序。

我想@ user1 @ user2和3更多可點擊並執行一個選擇器。

我也想讓它們變得大膽而且有一定的顏色。

UIWebView可以風格化文本,但我可以通過觸摸部分屬性字符串來執行選擇器?

我一直在試圖尋找這樣做未做標籤和按鈕以及每個用戶名這樣的長度動態計算它們的最好方法:

Label = "Liked by " 
Button = "@user1" 

Label ", " 
Button = "@user2" 

Label "and " 
Button "3 more" 

Label "." 

必須有一個更好的辦法! 在此先感謝。

+2

看看這個:http://stackoverflow.com/questions/3786528/iphone-ipad-how-exactly-use-nsattributedstring – Regan 2012-07-23 20:24:49

+0

謝謝!我沒有看到這個。 – 2012-07-23 22:12:58

回答

2

如果您不需要將其添加到滾動視圖,那麼使用內聯UIWebView會更好。你可以通過爲他們註冊一些委託來檢測webview中的動作/鏈接點擊,然後給出僞造的協議/ URL作爲鏈接URL。事情是這樣的:

UIWebView *wv = [[UIWebView alloc] initWithFrame:aFrame]; 
wv.delegate = self; 
[wv loadHTMLString:@"<a href='userlike:user1'>@user1</a> hates this." baseURL:nil ]; // further parts of this method name omitted 
// because it's long, look it up in UIWebView class reference. 
[self.view addSubview:vw]; 
[wv release]; 

和委託方法:

- (BOOL)webView:(UIWebView *)wv shouldStartLoadWithRequest:(NSURLRequest *)rq navigationType:(UIWebViewNavigationType)type 
{ 
    if ([[[rq URL] protocol] isEqualToString:@"userlike"]) 
    { 
     NSString *userName = [[rq URL] host]; 
     // extract username from the URL, then 
     return NO; 
    } 

    // else 
    return YES; 
} 

編輯:我發現this,你在尋找什麼。 (事實證明,@瑞根也建議完全一樣的東西。)

+0

謝謝,我要試一試! – 2012-07-23 20:44:18

+0

@JoseVentura我發現了一個更好的解決方案,請參閱編輯。 – 2012-07-23 20:55:00

+0

@JoseVentura哦,剛剛看到,所以這就是里根還建議的...... – 2012-07-23 20:55:42

1

您可以從HTML代碼調用選擇器,例如參見herehere