Как я могу центрировать UILabel в UIView? Я использую следующий код
float width = weatherView.bounds.size.width;
float height = weatherView.bounds.size.height;
[self.label setFrame:CGRectMake(width-100,height-100, 100, 100)];
Как я могу центрировать UILabel в UIView? Я использую следующий код
float width = weatherView.bounds.size.width;
float height = weatherView.bounds.size.height;
[self.label setFrame:CGRectMake(width-100,height-100, 100, 100)];
Как насчет:
[self.label setCenter:view.center];
Если метка является подзором вида:
[self.label setCenter:CGPointMake(view.frame.size.width / 2, view.frame.size.height / 2)]
Не используйте view.center
, если метка и представление не имеют одинакового супервизора.
Если немедленного соединения нет, вам придется преобразовать центр просмотра в пространство координат родительской метки. Затем вы можете использовать ответ PengOne с преобразованной точкой.
Используйте NSTextAlignmentCenter, если у вас есть уже установленный ярлык, и вы хотите сосредоточить его содержимое.
cell.menuLabel.textAlignment = NSTextAlignmentCenter;
Лучшее возможное решение:
Сначала:. Если вы делаете это программно, вам нужно будет инициализировать фрейм и некоторые настройки:
// 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
.
Что-то вроде этого должно сделать трюк... Убедитесь, что ваша метка настроена на центрированное выравнивание и достаточно большая/широкая для обработки текстовой строки.
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)];
Я думаю, что нужно делать то, о чем вы просите.
Ответ PengOne/Alex Lockwood прост и полезен. Если вы хотите поддерживать поворот, добавьте следующее, чтобы сохранить его по центру:
[self.myLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth];
Есть две возможности, если ваш UILabel добавлен через .xib или добавлен программно.
Если первый случай, добавленный через .xib, вы можете установить позицию из вкладки инспектора размера файла xib с помощью свойства "Arrange"
И если второй регистр сохраняется, вы можете установить как --- [self.label setCenter: view.center];