UIScrollView с UIButton: кнопки появляются только после прокрутки - PullRequest
0 голосов
/ 23 марта 2012

Я сделал свой собственный UIScrollView.

В - (void)drawRect:(CGRect)rect я нарисовал свою кнопку так:

- (void) createView {
CGFloat currentY = 0;
CGFloat currentX = 0;
CGFloat currentH = 0;

for (int i = 0; i < [images count]; i++) {
    UIImage *img = [images objectAtIndex:i]; 

    CGSize cropParam = [[finalCrops objectAtIndex:i] CGSizeValue];
    CGSize imgSize = [[finalSizes objectAtIndex:i] CGSizeValue];

    UIImage *newImg = nil;

    if (imgSize.width > 0) {
        newImg = [img resize:imgSize];
    }

    if (cropParam.width > 0) {
        newImg = [newImg crop:CGRectMake(0, 0, cropParam.width, cropParam.height)];
    }

    // Create a button for the image
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(currentX + margin, 
                                                                  currentY + margin, 
                                                                  newImg.size.width, 
                                                                  newImg.size.height)];

    [button setImage:newImg forState:UIControlStateNormal];
    [self addSubview:button];

    currentX += 2 * margin + newImg.size.width;

    if (currentX > viewWidth) {
        currentX = 0;
        currentY += 2 * margin + newImg.size.height; 
        currentH = newImg.size.height;
    }
}
self.contentSize = CGSizeMake(viewWidth, currentY);

}

Проблема в том, что когда вид появляется, он черный. Кнопка появляется только при прокрутке вида.

Чего мне не хватает?

1 Ответ

0 голосов
/ 23 марта 2012

Похоже, вы не запускаете действие перерисовки - из документации :

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

...