2015-05-08 6 views
0

У меня есть UIImageView в качестве фонового представления моего табличного вида. Когда нет данных для таблицы, я добавляю UILabel в качестве подсмотра изображения. Тем не менее, у меня проблемы с получением метки. Ярлык всегда выключен вправо.Центр UILabel Subview

UIImageView *backgroundImageView = [[UIImageView alloc]initWithFrame:self.tableView.frame]; 
    backgroundImageView.image = [UIImage imageNamed:@"background"]; 
    backgroundImageView.center = self.tableView.center; 

    self.noLocationsLabel = [[UILabel alloc]initWithFrame:backgroundImageView.frame]; 
    self.noLocationsLabel.center = backgroundImageView.center; 
    self.noLocationsLabel.text = @"No saved locations"; 
    self.noLocationsLabel.textAlignment = NSTextAlignmentCenter; 
    self.noLocationsLabel.textColor = [UIColor blackColor]; 
    self.noLocationsLabel.font = [UIFont fontWithName:@"Chalkboard SE" size:24.0]; 

self.tableView.backgroundView = backgroundImageView; 

if (self.locationsArray.count == 0) { 
     self.navigationItem.rightBarButtonItem.enabled = NO; 

     [self.tableView.backgroundView addSubview:self.noLocationsLabel]; 
     self.tableView.userInteractionEnabled = NO; 
    } 
+0

почему вы давая вид кадра изображения на UILabel кадр? –

ответ

1

Если кадр изображения говорит 50,50,50,50, то ваша метка будет также 50,50,50,50, но так как это подвид мнения, изображений, он никогда не будет центр. Такая же концепция применяется к center. Центр находится только в отношении просмотра взглядов.

Для того, чтобы сделать его центр можно установить рамки, как:

CGRect rect = CGRectMake(0,0,backgroundImageView.frame.size.width,backgroundImageView.frame.size.height); 

self.noLocationsLabel = [[UILabel alloc]initWithFrame: rect]; 

Или, возможно, даже:

self.noLocationsLabel = [[UILabel alloc]initWithFrame: backgroundImageView.bounds]; 

Edit:

Вы можете использовать center на подвидов. Но вы должны установить правильный центр.

self.noLocationsLabel.center = CGPointMake(CGRectGetMidX(backgroundImageView.bounds),CGRectGetMidY(backgroundImageView.bounds)); 

Difference between frame and bounds

+0

, так что вы говорите, что центр будет работать только для родительского вида? @Frankie –

+1

см. Мое правление относительно использования свойства 'center' – Frankie

+0

Я попытался установить центр ярлыка, как вы делали в своем редактировании, но это не устраняет проблему. – raginggoat

Смежные вопросы