エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

iOS 文字数で縦幅が変化するラベルを持つビューを作るカテゴリ

よく使う機能なのでカテゴリ化して作りました。

最後ceilしてるのはこちらを参考にさせていただきました。

引数のtextはNSStringとNSAttributedStringに対応してます。

※デカすぎるものを作ると落ちるので注意して下さい。

gist9976186

使うときはこういう感じで。

    NSString *str = @"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss";
    
    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"];
    [attrStr addAttribute:NSFontAttributeName
                    value:[UIFont systemFontOfSize:26.0]
                    range:NSMakeRange(24, 40)];
    
    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(0, 20, 320, 0) text:str padding:5 maxHeight:1000 templateLabel:nil];
    view1.backgroundColor = [UIColor greenColor];
    [self.view addSubview:view1];
    
    UIView *view2 = [[UIView alloc]initWithFrame:CGRectMake(0, 20 + view1.frame.size.height + 50, 320, 0) text:attrStr padding:5 maxHeight:1000 templateLabel:nil];
    view2.backgroundColor = [UIColor purpleColor];
    [self.view addSubview:view2];

f:id:J_ogawa:20140405004919p:plain

結構便利です。