计算 UILabel 和 UIButtons 大小来造句?

Posted

技术标签:

【中文标题】计算 UILabel 和 UIButtons 大小来造句?【英文标题】:Calculating UILabel and UIButtons sizes to make a sentence? 【发布时间】:2012-07-23 20:12:00 【问题描述】:

我正在尝试在我的应用中显示如下内容:

@user1@user23 个其他 点赞。

许多应用程序都具有这种格式,无论是对于发布者及其评论的 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 等?

自我调整大小的 UITableViewCell 中的 UIlabel 和 UIView 高度计算

禁用 UILabel、UIText 等的自动调整字体。在 iOS/Swift 中?