UIScrollView в iOS 6

Недавно я загрузил Xcode 4.5 (iOS 6), но когда попытался продолжить один из моих проектов, я заметил, что UIScrollView не работает должным образом, позвольте мне объяснить более четко:

Я создал UIScrollView и добавил его инициализированный код, используя следующий код:

-(void)viewDidLoad{

    [mainScrollView setScrollEnabled:YES];
    mainScrollView.contentSize = CGSizeMake(480, 0);

    [super viewDidLoad];

}

После того, как я открыл свой XIB и связалmainScrollView в UIScrollView, после того, как я добавил некоторые UIButton в scrollView. Когда я построил проект,mainScrollView прокручивал, но кнопки не появлялись, я имею в виду, я просто мог видеть кнопку, которая уже была на экране.What i'm doing wrong?How can i setup the UIScrollView?

 Pedro Mancheno18 авг. 2012 г., 21:51
У меня была такая же проблема только сейчас. Может ли это быть ошибкой в iOS6 SDK?

Ответы на вопрос(6)

-(void)viewDidLayoutSubviews
{
[self.scrollview setScrollEnabled:YES];
[self.scrollview setUserInteractionEnabled:YES];
[self.scrollview setContentSize:CGSizeMake(320, _y)];
[self.scrollview setAlwaysBounceVertical:YES];
}

Я использую переменную класса _y, так как я добавляю к ней все высоты подпредставлений.

xcode 4.5 , Если вы используетеscrollView Вы должны либо снять флажок & quot;use AutoLayout& Quot; в файле инспектора.

или если вы хотите использовать & quot;AutoLayout", затем в.m(implementation) file Добавь это

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    theScroller.contentSize=CGSizeMake(1024.0,1300.0);
}
 04 июл. 2013 г., 08:14
почему это не работает ввиду загрузки?
 05 окт. 2012 г., 11:52
Спасибо Спасибо спасибо!! С этим я бьюсь головой об кирпичную стену час или больше. Еще раз спасибо.
 26 окт. 2012 г., 06:15
Спасибо тебе за этот пост!!!! Я буквально сожгла весь день с этим. Я снял флажок & quot; использовать AutoLayout & quot; и, наконец, мой scrollView работает как положено. Сжигает меня ... TY снова
 05 окт. 2012 г., 12:12
Итак, ответ для AutoLayout находится здесь:stackoverflow.com/questions/12619786/… в основном, переместитеcontentSize код дляviewDidAppear метод.

Но вы настраиваете свой UIScrollView в viewDidAppear

Я делаю это также в статическом UITableView с изображениями.

Назовите свои изображения как timg1.png, timg2.png ....

в вашем файле ControllerView.h

@property (weak, nonatomic) IBOutlet UIScrollView *Sv1;
@property (weak, nonatomic) IBOutlet UIPageControl *Pc1;

В вашем файле ControllerView.m

-(void)viewDidAppear:(BOOL)animated
{

    //Scrollview
    Sv1.delegate = self;

    Sv1.contentSize = CGSizeMake(260, 176);

    [self.Sv1 setBackgroundColor:[UIColor clearColor]];
    // ScrollViewGarten.frame = CGRectMake(9, 11, 283, 170);
    [Sv1 setCanCancelContentTouches:NO];

    Sv1.multipleTouchEnabled = NO;
    Sv1.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    Sv1.clipsToBounds = YES;
    Sv1.scrollEnabled = YES;
    Sv1.pagingEnabled = YES;

    NSUInteger nimagesTextil = 0;
    CGFloat cxTextil = 0;
    for (; ; nimagesTextil++) {
        NSString *imageNameTextil = [NSString stringWithFormat:@"timg%d.png", (nimagesTextil + 1)];
        UIImage *imageTextil = [UIImage imageNamed:imageNameTextil];
        if (imageTextil == nil) {
            break;
        }
        UIImageView *imageViewTextil = [[UIImageView alloc] initWithImage:imageTextil];

        CGRect rect = imageViewTextil.frame;
        rect.size.height = 176;
        rect.size.width = 260;
        rect.origin.x = ((Sv1.frame.size.width - imageTextil.size.width) / 2) + cxTextil;
        rect.origin.y = ((Sv1.frame.size.height - imageTextil.size.height) / 2);

        imageViewTextil.frame = rect;

        [Sv1 addSubview:imageViewTextil];

        cxTextil += Sv1.frame.size.width;
    }
    self.Pc1.numberOfPages = nimagesTextil;
    [Sv1 setContentSize:CGSizeMake(cxTextil, [Sv1 bounds].size.height)];
    self.Pc1.currentPage = 0;

}

contentSize код дляviewDidAppear метод. Я нашел ответ в этом вопросе:, Вставьте ImageView в ScrollView с автоматическим расположением на iOS 6

что это ошибка с Xcode 4.5 или iOS 6 SDK. Я исправил это, добавив подпредставления в свой UIScrollView программно.

Таким образом, вы должны сделать что-то вроде:

- (void)viewDidLoad {

    [super viewDidLoad];

    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(400.0f, 10.0f, 60.0f, 30.0f);
    [mainScrollView addSubView:button];
    mainScrollView.contentSize = CGSizeMake(480.0f, mainScrollView.frame.size.height);
}

Попробуйте это и дайте мне знать, если это сработало для вас.

Если у вас есть старая версия XCode, было бы неплохо скопировать код и перо там, чтобы увидеть результаты.

CGSize имеет высоту 0?

 25 июн. 2012 г., 02:11
Вы не можете просто отключить его в IB? Или просто используя свойства? Установка ширины CGSize в 0 звучит как плохая идея.
 25 июн. 2012 г., 02:13
Если вы хотите отключить вертикальную прокрутку, установите высоту содержимого равной размеру представления прокрутки и отключите вертикальную отскок.
 Mateus25 июн. 2012 г., 02:10
Просто чтобы отключить вертикальную прокрутку!
 Mateus25 июн. 2012 г., 02:51
Оба способа работают, но мой идентификатор проблемы различен! Это похоже на то, что когда я прокручиваю UIButton, они остаются инертными, как будто они не находятся внутри UIScrollView, как будто они находятся внутри основного представления!
 25 июн. 2012 г., 02:52
Почему бы вам не попробовать войти в систему кнопок & apos; superviews?

Ваш ответ на вопрос