Как установить рамку с надписью при вращении iPad в симуляторе? - PullRequest
0 голосов
/ 23 августа 2011

Я новичок в разработке для iPad. Здесь у меня есть таблица с динамическим контентом. Каждая ячейка содержит две метки, вторая метка может увеличиваться или уменьшаться. Наконец я добавляю ярлыки в ячейку. Но когда я вращаю симулятор, метки в ячейке не меняются. Я не могу установить рамку для метки. Пожалуйста, помогите мне.

Заранее спасибо.

UILabel *label1 = nil;
UILabel *label2 = nil;

NSLog(@"it decides the tablecell");
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"] autorelease];

    label1 =[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 200, 44) ];
    //label1 = [[UILabel alloc] initWithFrame:CGRectZero];
    [label1 setLineBreakMode:UILineBreakModeWordWrap];
    [label1 setMinimumFontSize:FONT_SIZE];
    [label1 setNumberOfLines:0];
    [label1 setFont:[UIFont boldSystemFontOfSize:FONT_SIZE]];


    label2 = [[UILabel alloc] initWithFrame:CGRectZero];
    [label2 setMinimumFontSize:FONT_SIZE];
    [label2 setNumberOfLines:0];
    [label2 setLineBreakMode:UILineBreakModeWordWrap];
    [label2 setFont:[UIFont systemFontOfSize:FONT_SIZE]];


}
NSString *text1 = [arrOutline1 objectAtIndex:[indexPath row]];
NSString *text2 = [arrOutline2 objectAtIndex:[indexPath row]];



CGSize constraint = CGSizeMake((CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2))/ 2, 20000.0f);

CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
CGSize size2 = [text2 sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];


[label1 setText:text1];
[label2 setText:text2];

    [label1 setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN-10,( CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2))/2, MAX(size1.height, 44.0f))];

NSLog(@"now it is in cell methd");
UIDeviceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (orientation == UIDeviceOrientationLandscapeLeft||orientation==UIDeviceOrientationLandscapeRight)
{
    [label2 setFrame:CGRectMake(300 , CELL_CONTENT_MARGIN - 10,500 , MAX(size2.height, 44.0f))];
    NSLog(@"orientation is :LAndscape");
    //[[cell contentView] addSubview:label2];
    [cell addSubview:label2];

}
else
{
    NSLog(@"orientation is Portrait.");

    [label2 setFrame:CGRectMake(300 , CELL_CONTENT_MARGIN - 10,200 , MAX(size2.height, 44.0f))];
    [cell addSubview:label2];


}
    //[label2 setFrame:CGRectMake(300 , CELL_CONTENT_MARGIN - 10,( CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2)) /2 , MAX(size2.height, 44.0f))];




cellHeight =size2.height + 44;

label1.backgroundColor =[UIColor clearColor];
label2.backgroundColor =[UIColor clearColor];


[[cell contentView] addSubview:label1];
[label1 release];
[label2 release];

return cell;

}



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

[TableOutline reloadData];
return YES;
}

1 Ответ

1 голос
/ 23 августа 2011

Вам нужно изменить размер ваших подпредставлений автоматически, когда iPad вращается?

1) Убедитесь, что у вашего родительского представления (в вашем случае, я думаю, в ячейке табличного представления) autoresizesSubviews установлено значение YES (Это будетпо умолчанию)

2) Убедитесь, что для добавляемых вами ярлыков установлено правильное значение для autoresizingMask например

// To keep label1 the same size and have label2 stretch to fill the rest of the cell . . .
[label1 setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin];
[label2 setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

Здесь вы установили ярлык 1 как фиксированныйрасстояние от левой стороны и фиксированной ширины.Вы установили метку два на фиксированное расстояние слева и справа, но с переменной шириной.При изменении рамки ячейки таблицы она автоматически изменит рамки меток внутри нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...