манипулирование высотой UIScrollView для добавления другого UIView над ним

У меня есть UIScrollView, в котором я добавляю подпредставление, которое представляет собой TimeLineView (UIView). Для целей отображения; сначала я сделал то же самое, и TimeLineView отобразился без проблем. Но теперь я хочу иметь UIView чуть выше UIScrollView, где я могу отображать некоторую информацию о временной шкале.

Нужно ли уменьшать высоту UIScrollView, чтобы UIView помещался в пространстве над ним? Если да, то как мне это сделать?

Если есть другой способ... то, пожалуйста, дайте мне знать. Все мои первоначальные реализации следующие:

in .h

@property (nonatomic, readonly) UIScrollView *scrollView;
@property (nonatomic, readonly) TimeLineView *timelineView;

in .m

@synthesize scrollView = scrollView;
@synthesize timelineView = timelineView;

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

- (id)initWithCoder:(NSCoder *)decoder 
{    
    self = [super initWithCoder:decoder];
    if (self) {
        [self prepareCustomView];
    }
    return self;
}

- (void)prepareCustomView {
    // Initialization code

    // Add main scroll view
[self addSubview:self.scrollView];

    // Add timeline view inside scrollview
[self.scrollView addSubview:self.timelineView];


}


- (UIScrollView *)scrollView
{
    if (!scrollView) {
        scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, TOP_BAR_HEIGHT, self.bounds.size.width, self.bounds.size.height-TOP_BAR_HEIGHT-FOOTER_HEIGHT)];
        scrollView.contentSize = CGSizeMake(self.bounds.size.width,TIMELINE_HEIGHT);
        scrollView.scrollEnabled = TRUE;
        scrollView.backgroundColor =[UIColor whiteColor];
        scrollView.alwaysBounceVertical = TRUE;
    }
    return scrollView;
}

Заранее спасибо за помощь.


person keepsmiling    schedule 30.05.2012    source источник
comment
Я не думаю, что вам нужно будет установить высоту UIView, чтобы она соответствовала прокрутке. Пожалуйста, проверьте высоту UIView в Интерфейсном Разработчике. Нажмите на рамку приложения. Откройте инспектор атрибутов. Проверьте, отсутствует ли строка состояния или нет. Если нет, то установите его равным none. Проверьте значение в инспекторе размеров. Установите высоту соответственно. Я надеюсь, что это может немного помочь.   -  person Akhilesh Sharma    schedule 30.05.2012
comment
спасибо за первый ответ :) но я хочу еще один UIView над UIScrollView, который я реализовал. Первоначально прокрутка занимала весь экран симулятора iphone. Теперь я просто хочу еще один UIView над ним.   -  person keepsmiling    schedule 30.05.2012
comment
вы программно добавляете UIView.   -  person Akhilesh Sharma    schedule 30.05.2012
comment
ya.. Я добавляю UIView программно.   -  person keepsmiling    schedule 30.05.2012
comment
тогда да, вам придется управлять высотой вручную.   -  person Akhilesh Sharma    schedule 30.05.2012


Ответы (1)


Да, вам нужно изменить ось Y и уменьшить высоту прокрутки на высоту вашего UIView. Вам нужно изменить рамку вашего прокрутки следующим образом, если прокрутка находится чуть ниже UIView:

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, UIViewFrame.size.height+UIViewFrame.origin.y, self.bounds.size.width, self.bounds.size.height-TOP_BAR_HEIGHT-FOOTER_HEIGHT-UIViewFrame.size. высота)];

где UIViewFrame — это рамка вашего UIView.

person Nuzhat Zari    schedule 30.05.2012