3

私のアプリには情報ページがあります。テキストの長さは、ローカリゼーションにより異なる場合があります。それに加えて、3.5 インチの画面は 4 インチのディスプレイよりも面積が少なくなります。だから私が達成しようとしているのは、UILabelがScrollView内で「成長」し、Scrollviewが画面に適応することです。

これは私のコードです:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

// Create a ScrollView and a label
UIScrollView *infoScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(20.0f, 55.0f, 300.0f, 400.0f)];

CGRect labelFrame = CGRectMake(0, 0, 280, 800);
UILabel *infoLabel = [[UILabel alloc] initWithFrame:labelFrame];

NSString *labelText = NSLocalizedString (@"InfoText",@"");
[infoLabel setText:labelText];

// Tell the label to use an unlimited number of lines
[infoLabel setNumberOfLines:0];
[infoLabel setBackgroundColor:[UIColor clearColor]];
[infoLabel setFont:[UIFont boldSystemFontOfSize:17]];
infoLabel.textColor = [UIColor colorWithRed:255 green:255 blue:255 alpha:1.0];
[infoLabel sizeToFit];
infoScroll.contentSize = CGSizeMake(infoScroll.contentSize.width, infoLabel.frame.size.height);
[infoScroll addSubview:infoLabel];

[self.view addSubview:infoScroll];

}

アドバイスをください、事前に感謝します

4

1 に答える 1

4

以下の方法で関数を変更します。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // Create a ScrollView and a label
    UIScrollView *infoScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(20.0f, 55.0f, self.view.frame.size.width - 20.0, self.view.frame.size.height - 55)];
    infoScroll.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    UILabel *infoLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    infoLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;        

NSString *labelText = NSLocalizedString (@"InfoText",@"");
    [infoLabel setText:labelText];

    // Tell the label to use an unlimited number of lines
    [infoLabel setNumberOfLines:0];
    [infoLabel setBackgroundColor:[UIColor clearColor]];
    [infoLabel setFont:[UIFont boldSystemFontOfSize:17]];
    infoLabel.textColor = [UIColor colorWithRed:255 green:255 blue:255 alpha:1.0];
    //[infoLabel sizeToFit];

    CGSize infoLabelSize = [infoLabel.text sizeWithFont:infoLabel.font
               constrainedToSize:CGSizeMake(infoScroll.frame.size.width, 5000)
                   lineBreakMode:UILineBreakModeWordWrap];

    infoLabel.frame = CGRectMake(0, 0, infoLabelSize.width, infoLabelSize.height);
    infoScroll.contentSize = infoLabelSize;
    [infoScroll addSubview:infoLabel];

    [self.view addSubview:infoScroll];

}
于 2013-03-02T15:42:34.220 に答える