2016-01-11 4 views
1

Хорошо, я уже прошел аналогичные вопросы, но никто из них не помог. Я хочу добавить UILabel внутри UIScrollView, чтобы метка могла прокручиваться, если содержимое большого размера. Вот мой код:Как добавить UILabel внутри UIScrollView программно?

ViewController.h:

@interface ViewController : UIViewController 
{ 
    UILabel *myLabel; 
    UIScrollView *myScroll; 
} 

ViewController.h:

myLabel = [[UILabel alloc]initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y+30, self.view.frame.size.width, self.view.frame.size.height)]; 

myScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y+30, self.view.frame.size.width, self.view.frame.size.height)]; 

myLabel.backgroundColor = [UIColor yellowColor]; 

myLabel.text = @"Large random text"; 
[myLabel setNumberOfLines:0]; 
myLabel.lineBreakMode = NSLineBreakByWordWrapping; 
[myLabel sizeToFit]; 

myScroll.contentSize = CGSizeMake(myLabel.frame.size.width,   
myLabel.frame.size.height); 
[myScroll addSubview:myLabel]; 

[self.view addSubview:myScroll]; 

Я искал много в Интернете, но не смогли найти ответ, может кто-то дайте мне знать в чем проблема? Спасибо!

+1

В чем проблема с кодом, который вы опубликовали? – rmaddy

+1

Имейте в виду, что рамка метки должна быть относительно прокрутки, а не 'self.view'. – rmaddy

+0

@rmaddy - нет полосы прокрутки, поэтому я не могу просмотреть весь текст. –

ответ

0

Основываясь на ваших комментариях, вам необходимо определить размер этикетки по мере необходимости, чтобы она была достаточно большой для данного текста. Затем добавьте ярлык для прокрутки. Затем установите вид прокрутки contentSize, чтобы он соответствовал всей метке. Это обеспечит просмотр прокрутки, позволяющий прокручивать, чтобы увидеть всю метку.

В дополнение к этому, убедитесь, что рамка этикетки относится к виду прокрутки, а не к self.view. Другими словами, установив начало кадра метки в 0,0, поместите метку в левом верхнем углу прокрутки независимо от положения прокрутки относительно ее родителя.

0

Я не уверен, как это сделать, но я хотел бы предложить альтернативу, которая может удовлетворить ваши потребности. Используйте UITextView, но установите «[textView userInteractionEnabled: NO]», и он будет действовать как метка, так как он не может быть отредактирован. Это может выглядеть так, как вы хотите.

+0

спасибо, но мне нужно сделать это на этикетке. –

0

Try, заменив ваш contentSize как ниже кода,

myScroll.contentSize = CGSizeMake(self.view.frame.size.width,self.view.frame.size.height + 100); 

Надеется, что это будет работать для и.

+0

На самом деле вы получаете меньше высоты, чем высота self.view, поэтому scrollview не будет прокручиваться. Чтобы заставить его прокручивать, вам нужно увеличить высоту, а затем ее фактическую высоту. Это оно. –

+0

@Tejas K - если u даст вашу высоту метки в scrollview.contentSize, тогда она не будет работать bcz, ее высота меньше фактической высоты scrollview. вы можете просто проверить, как myScroll.contentSize = CGSizeMake (320, 750) –

0

1. Вам нужно использовать View (ContentView) для размещения этикеток.

2. Добавить ContentView в ScrollVIEW.

3.Assign ContentView Размер, что вы хотите

Перейти по этой ссылке, вы получите четкое представление. https://www.youtube.com/watch?v=UnQsFlMGDsI

Удалить scrollView = [[UIScrollView alloc] init]; это не обязательно. Пожалуйста, повысьте, если это поможет.

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