2013-10-10 2 views
5

У меня есть UILabel с приписываемой строки, я создаю в UIScrollView:UILabels в UIScrollView несогласован, несмотря на использование CGRectIntegral?

CGRect frame = self.view.frame; 
frame.origin.x = 10; 
frame.size.width -= 10; 
frame = CGRectIntegral(frame); 

UILabel *textView = [[UILabel alloc] initWithFrame:frame]; 
textView.numberOfLines = 0; 
textView.lineBreakMode = NSLineBreakByWordWrapping; 
textView.backgroundColor =[UIColor clearColor]; 
[self addSubview:textView]; 

Несмотря на обеспечение кадра устанавливается с помощью CGRectIntegral, КСН Simulator все еще показывает ярлык, как криво.

Misaligned label

Чтобы попытаться избавиться от перекоса, я также пытался это без удачи:

textView.frame = CGRectIntegral(textView.frame); 
textView.bounds = CGRectIntegral(textView.bounds); 

Может UILabel с приписываемыми строками правильно выровнен в Scrollview?

+2

Содержит ли содержание прокрутки встроенный интеграл? Как насчет contentInset? –

+2

@Answerbot Как насчет рамки прокрутки? – Dabrut

+0

Вы вызываете sizeToFit в любой момент или перезагружаете кадр каким-либо другим способом позже? Кроме того, в соответствии с тем, что сказал Дабрут, кадр прокрутки является интегральным прямоугольником? И происходит ли это в UITableViewCell или аналогичном? – Nick

ответ

1

Я не уверен, что это решит вашу проблему, но вы не имеете ничего потерять, чтобы попробовать другой метод:

CGRect frame = CGRectOffset(CGRectInset(self.view.frame,5,0),5,0); 
UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
label.text = @"Test"; 
[self addSubview:label]; 

Если это не работает, ошибка может исходить от вашего лейбла сам (может быть adjustsFontSizeToFitWidth, lineBreakMode , sizeToFit или contentMode). Весь ваш код ярлыка здесь?

Попробуйте инкрементную отладку, поскольку она может отсутствовать из кадра вообще.

+0

Все замечательные предложения. Это не исправить мою проблему, но кажется вероятным, что проблема находится где-то в иерархии супервизора, которая была слишком сложна, чтобы попытаться включить код. В любом случае, оценили все предложения. – memmons

+1

Удачи вам в этом;) – Francescu

0

Вы установили frame.origin.x = 10; попробуйте установить его на ноль.

+0

Почему? Не знаю, почему это имеет значение. – memmons

+0

это сработало для вас ..? –

+0

Becoz, происхождение - не что иное, как начальная позиция метки. x - начальная позиция слева, а y - начальная позиция сверху. –

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