2012-07-23 50 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