2013-10-10 3 views
0

Я боролся с этим, и, возможно, я не понимаю, как работает scrollviews. Я пытаюсь вычислить высоту автоматически для «self.description», однако ничего не работает. Я изменил значения из scrollviewframe, даже попытался изменить значения с помощью frame.size.height. однако он все равно не вычисляет высоту. Я что-то упускаю?ScrollViews не будет изменять размер

- (id)initWithFrame:(CGRect)frame 
{ 
self = [super initWithFrame:frame]; 
if (self) { 

    if (self) { 

     CGRect scrollViewFrame = CGRectMake(0, 0, 460, 590); 
     scrollView = [[UIScrollView alloc] initWithFrame:scrollViewFrame]; 

     [self.contentView addSubview:self.scrollView]; 


     [scrollView setCanCancelContentTouches:NO]; 

     scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
     scrollView.clipsToBounds = YES; 
     scrollView.scrollEnabled = YES; 
     scrollView.pagingEnabled = NO; 

     self.label = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 67.0, 290, 50)]; 
     self.label.font= [UIFont fontWithName:@"Helvetica-Bold" size:20]; 
     self.label.textColor = [UIColor colorWithRed:33.0f/255.0f green:74.0f/255.0f blue:146.0f/255.0f alpha:1.0f]; 
     self.label.numberOfLines = 0; 
     self.label.lineBreakMode = NSLineBreakByWordWrapping; 
     self.label.backgroundColor = [UIColor whiteColor]; 
     [scrollView addSubview:self.label]; 

     //[self.contentView addSubview:self.label]; 

     self.description = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 380.0, 300, 9999)]; 
     self.description.font= [UIFont fontWithName:@"Helvetica-Light" size:15]; 
     self.description.textColor = [UIColor blackColor]; 
     self.description.textAlignment = NSTextAlignmentJustified; 
     self.description.numberOfLines = 0; 
     self.description.lineBreakMode = NSLineBreakByWordWrapping; 
     self.description.backgroundColor = [UIColor whiteColor]; 
     [scrollView addSubview:self.description]; 
     //[self.contentView addSubview:self.description]; 


     self.image = [[UIImageView alloc] initWithFrame:CGRectMake(20, 130, 280, 228)]; 
     self.image.clipsToBounds = YES; 
     [scrollView addSubview:self.image]; 
     //[self.contentView addSubview:self.image]; 

     float hgt=0; for (UIView *view in scrollView.subviews) hgt+=view.frame.size.height; 
     [scrollView setContentSize:CGSizeMake(scrollView.frame.size.width,hgt)]; 


     self.backgroundColor = [UIColor whiteColor]; 

    } 
} 

ответ

0

Вы пытаетесь изменить размер прокрутки или размер содержимого прокрутки?

Если вы хотите изменить размер прокрутки, то self.contentView не будет изменяться, и если он не больше или равен scrollview, возможно, это ваша проблема.

+0

Я пытаюсь изменить размер self.description подвида. Размер контента –

+0

И вы хотите изменить размер текста на основе длины текста? а затем измените размер прокрутки, не так ли? –

+0

Точно, что я хочу делать. Я пробовал так много разных вещей безрезультатно. –

0
float contentHeight = 0; 

contentHeight = yourLastSubview.frame.origin.x + yourLastSubview.frame.size.height; 

[scrollView setContentSize:CGSizeMake(scrollView.frame.size.width,contentHeight)]; 

//yourLastSubview is for example your self.description, because self.description' origin.y is the largest (380) 

scrollView.frame.size.height Если больше, чем contentHeight, ваш scrollView не будет прокручиваться. Например, если ваш scrollView.frame = CGRectMake(0,0,320,480); и ваш contentHeight 400 scrollView не будут прокручиваться, но если contentHeight = 500; будет.

Если вы хотите включить подпрыгивая свой Scrollview когда contentHeight меньше вашего использование Высоты Scrollview это: scrollView.alwaysBounceVertical = YES;

+0

Не повезло, прокрутка не проблема, ее изменение размера self.description не выполняется. –

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