Рассчитать высоту для UIScrollView - PullRequest
0 голосов
/ 15 января 2012

В моем проекте у меня есть простой UIView с UIScrollView подпредставлением.Я пытаюсь вычислить высоту на основе содержимого в UIScrollView с помощью следующего кода:

enter image description here

file.h

@interface ScrollViewController : UIViewController {
IBOutlet UILabel* topLabel;
IBOutlet UILabel* bottomLabel;
    IBOutlet UIScrollView * scroller;   
} 

@property(nonatomic,retain) IBOutlet UIScrollView *scroller;

file.m

- (void)viewDidLoad {
    [scroller setScrollEnabled:YES];
    CGFloat scrollViewHeight = 0.0f;
    for (UIView* view in scroller.subviews)
    {
       scrollViewHeight += view.frame.size.height;
    }
    // print value 88.000000
    NSLog(@"%f", scrollViewHeight);
    [scroller setContentSize:CGSizeMake(320, scrollViewHeight)];
    [super viewDidLoad];
}

Я не знаю, почему код не работает.

Ответы [ 2 ]

0 голосов
/ 15 января 2012

Ну, пара вещей.Во-первых, установите точку останова в начале этого метода и просмотрите код по одной строке за раз, чтобы увидеть, что он делает.

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

for (UIView *view in scroller.subviews){
    if (scrollViewHeight < view.frame.origin.y + view.frame.size.height) scrollViewHeight = view.frame.origin.y + view.frame.size.height;
}

Это должно дать вам правильную высоту.

0 голосов
/ 15 января 2012

Что не работает установка высоты или оператора журнала?

Это не то, как вы печатаете с плавающей точкой, %@ является спецификатором формата для печати объектов. Проверьте Спецификаторы формата строки

Что тебе нужно

NSLog(@"%f", scrollViewHeight);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...