Подтвердить что ты не робот

Как центрировать UILabel на UIView

Как я могу центрировать UILabel в UIView? Я использую следующий код

float width = weatherView.bounds.size.width; 
float height = weatherView.bounds.size.height; 

[self.label setFrame:CGRectMake(width-100,height-100, 100, 100)];
4b9b3361

Ответ 1

Как насчет:

[self.label setCenter:view.center];

Ответ 2

Если метка является подзором вида:

[self.label setCenter:CGPointMake(view.frame.size.width / 2, view.frame.size.height / 2)]

Не используйте view.center, если метка и представление не имеют одинакового супервизора.

Если немедленного соединения нет, вам придется преобразовать центр просмотра в пространство координат родительской метки. Затем вы можете использовать ответ PengOne с преобразованной точкой.

Ответ 3

Используйте NSTextAlignmentCenter, если у вас есть уже установленный ярлык, и вы хотите сосредоточить его содержимое.

cell.menuLabel.textAlignment = NSTextAlignmentCenter;

Ответ 4

Лучшее возможное решение:

Сначала:. Если вы делаете это программно, вам нужно будет инициализировать фрейм и некоторые настройки:

// Simple example
int yPosition = 10;
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0, yPosition, self.view.frame.size.width, 0)];
[label setText: @"Testing..."];
[label setBackgroundColor: [UIColor clearColor]];
[label setNumberOfLines: 0];
[label sizeToFit];

Второе: Если метка, на которую вы пытаетесь сосредоточиться, может запускать ее только после вызова setNumberOflines и 0 value, ваш текст будет иметь все необходимые строки и sizeToFit метод, который должен иметь хорошую настройку и, наконец,

[self.label setCenter: CGPointMake(self.view.center.x, self.label.center.y)];

Это будет центрировать only the X axis, а Y axis останется в желании в инициализации фрейма.

PS: Он также действителен, если не UILabel, но зависит от используемого вами элемента управления, потребуется другая простая настройка или нет, и если вы хотите только программно программировать, а interface builder, просто нужно запустить second code.

Ответ 5

Что-то вроде этого должно сделать трюк... Убедитесь, что ваша метка настроена на центрированное выравнивание и достаточно большая/широкая для обработки текстовой строки.

float viewWidth = weatherView.frame.size.width;
float viewHeight = weatherView.frame.size.height;
float labelWidth = label.frame.size.width;
float labelHeight = label.frame.size.height;

float xpos = (viewWidth/2.0f) - (labelWidth/2.0f);
float ypos = (viewHeight/2.0f) - (labelHeight/2.0f);

[label setFrame:CGRectMake(xpos,ypos,labelWidth,labelHeight)];

Я думаю, что нужно делать то, о чем вы просите.

Ответ 6

Ответ PengOne/Alex Lockwood прост и полезен. Если вы хотите поддерживать поворот, добавьте следующее, чтобы сохранить его по центру:

[self.myLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth];

Ответ 7

Есть две возможности, если ваш UILabel добавлен через .xib или добавлен программно.

Если первый случай, добавленный через .xib, вы можете установить позицию из вкладки инспектора размера файла xib с помощью свойства "Arrange"

И если второй регистр сохраняется, вы можете установить как --- [self.label setCenter: view.center];