首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIRefreshControl attributedTitle多行

UIRefreshControl attributedTitle多行
EN

Stack Overflow用户
提问于 2013-04-22 19:33:09
回答 3查看 2.8K关注 0票数 4

是否可以在UIRefreshControl标题中使用多行?每当我将\n添加到NSAttributedString中时,只会显示第一行。我正在尝试设置一个标题,并在下一行添加更多的文本。那么,有没有在UIRefreshControl中使用两行文本的解决方法呢

这是当前的代码,其中只显示"Title Here“:

代码语言:javascript
复制
self.refreshControl = [[UIRefreshControl alloc] init];

NSString *title = @"Title Here";
NSString *subText = @"Subtext Here";
NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@",title,subText]];

[attString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica" size:20.0f] range:NSMakeRange(0, [title length])];
[attString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica" size:14.0f] range:NSMakeRange([title length],[subText length])];

[attString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, [title length])];
[attString addAttribute:NSForegroundColorAttributeName value:[UIColor lightGrayColor] range:NSMakeRange([title length], [subText length])];

self.refreshControl.attributedTitle = attString;
EN

回答 3

Stack Overflow用户

发布于 2014-11-12 22:02:46

下面是一个技巧的方法:在UIRefreshControl中找到UILabel并设置numberOfLines = 0。

代码语言:javascript
复制
UILabel *titleLabel = [[[[self.refreshControl subviews] firstObject] subviews] lastObject];
if (titleLabel) {
    titleLabel.numberOfLines = 0;

    NSString title = @"Pull to Refresh.\nUpdated Time: 09:30"; // \n for new line.
    self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:title];
}
票数 5
EN

Stack Overflow用户

发布于 2013-04-22 20:07:50

这段代码可以正常工作

代码语言:javascript
复制
NSString *title = @"Title Here";
NSString *subText = @"Subtext Here";

NSMutableAttributedString *titleAttString =  [[NSMutableAttributedString alloc] initWithString:title];
NSMutableAttributedString *subTitleAttString =  [[NSMutableAttributedString alloc] initWithString:subText];

[titleAttString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica" size:20.0f] range:NSMakeRange(0, [title length])];
[subTitleAttString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica" size:14.0f] range:NSMakeRange(0,[subTitle length])];

[titleAttString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, [title length])];
[subTitleAttString addAttribute:NSForegroundColorAttributeName value:[UIColor lightGrayColor] range:NSMakeRange(0, [subTitle length])];

[titleAttString appendAttributedString:subTitleAttString];

self.refreshControl.attributedTitle = titleAttString;
票数 1
EN

Stack Overflow用户

发布于 2019-05-07 12:21:50

诀窍是将刷新控制器的UILable属性更改为Zero。问题是我们必须通过子视图和子视图找到标签,如下所示。

这是一个Swift版本

代码语言:javascript
复制
    if let refreshLabel = refreshControl?.subviews.first?.subviews.last as? UILabel {
            refreshLabel.numberOfLines = 0
    }

下面是完整的代码示例

代码语言:javascript
复制
private var marketRefreshController = UIRefreshControl()
private var lastUpdatedDate = Date()

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.refreshControl = marketRefreshController
    if let refreshLabel = refreshControl?.subviews.first?.subviews.last as? UILabel {
        refreshLabel.numberOfLines = 0
    }
    marketRefreshController.addTarget(self, action: #selector(refreshMarketData), for: .valueChanged)
    marketRefreshController.tintColor = UIColor.blue
    let textAttributes = [NSAttributedString.Key.font: UIFont.appSubTitle,
                          NSAttributedString.Key.foregroundColor: UIColor.blue]
    let timeSinceLastUpdate = lastUpdatedDate.timeAgoSinceNow // Date Sting Converter Helper Method
    let displayString = "Fetching Market Data ... \n Last Updated: \(timeSinceLastUpdate)"
    marketRefreshController.attributedTitle = NSAttributedString(string: displayString,
                                                                 attributes: textAttributes)
    tableView.addSubview(marketRefreshController)
}

预期输出应如下所示-

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16146160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档