5

私はiPhoneを初めて使用しますが、

UILabelでテキストを垂直方向に揃えるにはどうすればよいですか?

これが私のコードスニペットです。

    UILabel *lbl=[[UILabel alloc]init];
    lbl.frame=CGRectMake(10,10,100,100);
    lbl.backgroundColor=[UIColor clearColor];
    lbl.font=[UIFont systemFontOfSize:13];
    lbl.text=@"123456";
    [scrollVw addSubview:lbl];

表示されるテキストは次の形式です123456が、テキストを次のように垂直に表示する必要があります。

6
5
4
3
2
1

どんな助けでも適用されます。

4

5 に答える 5

6

UILabelテキストを縦に揃えることは不可能です。sizeWithFont:ただし、 のメソッドを使用してラベルの高さを動的に変更し、NSString必要に応じて x と y を設定することができます。

代わりに、 を使用できますUITextFieldcontentVerticalAlignmentのサブクラスであるため、peoperty をサポートしUIControlます。ユーザーがテキストを入力できないようにするにuserInteractionEnabledは、に設定する必要があります。NO

編集1

UILabel の代わりに、次のような UITableView を作成します:-

TableActivityLevel=[[UITableView alloc] initWithFrame:CGRectMake(224, 203, 27, 0) style:UITableViewStylePlain];
TableActivityLevel.delegate=self;
TableActivityLevel.dataSource=self;
TableActivityLevel.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
TableActivityLevel.rowHeight = 17;
TableActivityLevel.backgroundColor=[UIColor clearColor];    
TableActivityLevel.layer.borderColor = [[UIColor clearColor]CGColor];
TableActivityLevel.separatorStyle = UITableViewCellSeparatorStyleNone;

EDIT 2 UILabels を使用したメソッドも見つかりました!! :) これをチェックしてください....

UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(0.0, 0.0, 10.0, 100.0)];
[label1 setBackgroundColor:[UIColor clearColor]];
[label1 setNumberOfLines:0];
[label1 setCenter:self.view.center];
[label1 setFont:[UIFont fontWithName:@"Helvetica" size:12.0]];
[label1 setTextColor:[UIColor whiteColor]];
[label1 setTextAlignment:UITextAlignmentCenter];
[label1 setText:@"1 2 3 4 5 6"];
[self.view addSubview:label1];
于 2012-10-20T07:37:09.730 に答える
4

例のように単一行のテキストである場合は、さまざまな回避策を使用できます。個人的には、次のように UILabel サブクラスを作成します。

@implementation VerticalLabel

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        self.numberOfLines = 0;
    }
    return self;
}

- (void)setText:(NSString *)text {
    NSMutableString *newString = [NSMutableString string];
    for (int i = text.length-1; i >= 0; i--) {
        [newString appendFormat:@"%c\n", [text characterAtIndex:i]];
    }

    super.text = newString;
}

@end

もう交換するしかない

UILabel *lbl = [[UILabel alloc] init];

UILabel *lbl = [[VerticalLabel alloc] init];

縦書きテキストを取得します。

于 2012-10-20T08:26:20.643 に答える
3

こんにちは、次のコードはうまく機能しています

UILabel *lbl=[[UILabel alloc]init];
lbl.frame=CGRectMake(10,10,10,300);
lbl.backgroundColor=[UIColor clearColor];
lbl.numberOfLines=6; // Use one to 6 numbers
lbl.font=[UIFont systemFontOfSize:13];
lbl.text=@"123456";

NSString *reverse=lbl.text;
NSMutableString *reversedString = [NSMutableString string];
NSInteger charIndex = [reverse length];
while (charIndex > 0) {
    charIndex--;
    NSRange subStrRange = NSMakeRange(charIndex, 1);
    [reversedString appendString:[reverse substringWithRange:subStrRange]];
}
NSLog(@"%@", reversedString);


CGSize labelSize = [lbl.text sizeWithFont:lbl.font
                          constrainedToSize:lbl.frame.size
                              lineBreakMode:lbl.lineBreakMode];
lbl.frame = CGRectMake(
                         lbl.frame.origin.x, lbl.frame.origin.y,
                         lbl.frame.size.width, labelSize.height);


lbl.text=reversedString;

 [scrollview addSubview:lbl];
于 2012-10-20T07:54:36.383 に答える
2
UILabel *lbl=[[UILabel alloc]init];
    lbl.frame=CGRectMake(10,10,10,100);
    lbl.backgroundColor=[UIColor clearColor];
    lbl.font=[UIFont systemFontOfSize:13];
    lbl.text=@"123456";
    lbl.numberOfLines = 10;
    [self.view addSubview:lbl];
于 2012-10-20T07:58:51.220 に答える
1

垂直方向の配置はできませんが、別の方法で表示します

UILabel *lbl=[[UILabel alloc]init];
lbl.frame=CGRectMake(10,10,100,400);
lbl.backgroundColor=[UIColor clearColor];
lbl.font=[UIFont systemFontOfSize:13];
lbl.text=@"1\n2\n3\n4\n5\n6";
[scrollVw addSubview:lbl];
于 2012-10-20T07:30:00.817 に答える