не удалось увеличить ширину UILabel в ландшафтном режиме - PullRequest
0 голосов
/ 16 января 2012

Я сделал приложение для iPad, в котором у меня есть tableView с именем crollTableView, в моем tableView я создаю по две метки в каждой ячейке строки с именем capitalLabel и stateLabel, в портретном режиме

теперь я хочу увеличить ширину своих этикеток в альбомном режиме,

вот фрагмент кода,

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

if(tableView==crollTableView){
        static NSString *CellIdentifier=@"Cell";
        static NSInteger StateTag = 1;
        static NSInteger CapitalTag = 2;
        UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if(cell == nil){

            // cell.backgroundColor=[UIColor yellowColor];
            cell=[[[UITableViewCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
            CGRect frame;
            frame.origin.x = 0; 
            frame.origin.y = 0;
            frame.size.height = 70;
            frame.size.width = 650;


            UILabel *capitalLabel = [[UILabel alloc] initWithFrame:frame];
            capitalLabel.tag = CapitalTag;
            capitalLabel.opaque = FALSE;
            capitalLabel.font=[UIFont systemFontOfSize:20.0];
            [cell.contentView addSubview:capitalLabel];


            frame.origin.x += 680;
            UILabel *stateLabel = [[UILabel alloc] initWithFrame:frame];
            stateLabel.tag = StateTag;
            stateLabel.font=[UIFont systemFontOfSize:17.0];
            [cell.contentView addSubview:stateLabel];
        }  

        UILabel* capitalLabel = (UILabel *) [cell.contentView viewWithTag:CapitalTag];
        UILabel*  stateLabel = (UILabel *) [cell.contentView viewWithTag:StateTag];

        capitalLabel.text=[news2 objectAtIndex:indexPath.row];
        stateLabel.text = [news3 objectAtIndex:indexPath.row];

       capitalLabel.backgroundColor = [UIColor clearColor];
        stateLabel.backgroundColor = [UIColor clearColor];

        capitalLabel.textColor=[UIColor whiteColor];
        stateLabel.textColor=[UIColor whiteColor];

        if(count<[news3 count]){
             capitalLabel.numberOfLines = 0;
            [capitalLabel sizeToFit];

            stateLabel.numberOfLines = 0;
            [stateLabel sizeToFit];

        }count++;

        return cell;
    }
 }

какие изменения я должен сделать в своем коде?

Ответы [ 4 ]

1 голос
/ 16 января 2012

Попробуйте установить autoresizingMask для видов, которые вы хотите автоматически масштабировать:

В if (cell == nil) после alloc+init меток добавить:

capitalLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

stateLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
1 голос
/ 16 января 2012

в iOS не заботится об увеличении ширины для любого элемента управления при изменении ориентации. Просто установите свойство маски автоматического изменения размера для 2 меток равным UIViewAutoresizingF FlexibleWidth .. это означает, что ширина вашего элемента управления будетизменить в соответствии с размером кадра superview.

1 голос
/ 16 января 2012

Вы должны переопределить

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 // Return YES for supported orientations.
 return (interfaceOrientation == UIInterfaceOrientationPortrait);
 }

Проверяя условие, является ли текущая ориентация альбомной или портретной, вы можете соответственно установить рамку меток.

0 голосов
/ 26 июля 2013

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

Вы можете изменить значение в Xcode инспекторе размера.

enter image description here

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