计算 UILabel 和 UIButtons 大小来造句?
Posted
技术标签:
【中文标题】计算 UILabel 和 UIButtons 大小来造句?【英文标题】:Calculating UILabel and UIButtons sizes to make a sentence? 【发布时间】:2012-07-23 20:12:00 【问题描述】:我正在尝试在我的应用中显示如下内容:
被 @user1、@user2 和 3 个其他 点赞。
许多应用程序都具有这种格式,无论是对于发布者及其评论的 cmets, 示例:@me 是的,苹果很好
当您点击他们的名字时,它会将您带到应用程序的某个位置。
我希望 @user1 @user2 和另外 3 个可以点击并执行选择器。
我也希望它们是粗体和某种颜色。
UIWebView
可以对文本进行样式化,但我可以通过触摸属性字符串的一部分来执行选择器吗?
我一直在尝试找到最好的方法来做到这一点,而无需制作标签和按钮并通过每个用户名的长度动态计算它们,如下所示:
Label = "Liked by "
Button = "@user1"
Label ", "
Button = "@user2"
Label "and "
Button "3 more"
Label "."
一定有更好的方法! 提前致谢。
【问题讨论】:
看看这个:***.com/questions/3786528/… 谢谢!我没看到这个。 【参考方案1】:使用内联 UIWebView 会更好——前提是您不需要将其添加到滚动视图中。您可以通过为它们注册一些委托,然后将虚假协议/URL 作为链接 URL 来检测 web 视图中的操作/链接点击。像这样的:
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,正是您要找的。 (事实证明,@regan 也提出了完全相同的建议。)
【讨论】:
谢谢,我要试试这个! @JoseVentura 我找到了更好的解决方案,请参阅编辑。【参考方案2】:您可以从 HTML 代码中调用选择器,例如 here 和 here。
【讨论】:
以上是关于计算 UILabel 和 UIButtons 大小来造句?的主要内容,如果未能解决你的问题,请参考以下文章
SKScene 与 UIKit 元素(UIButtons,UILabel,...)的场景转换
如何动态地将动态大小的 UIButtons 插入 UIStackView?
如何通过 UIButtons 读取 UILabel(没有文本)
如何从 Multipeer Connectivity Session 更改视图 UILabel、UIButtons、UIViews 等?