我已经在控制器上工作了 4 天,但我无法解决我的问题!
让我们来解释一下我的架构:
我有一个“Rootview”,其中包含一个 ScrollView 和 anImageView(它们都添加到 IB 中)
然后我有 4 个外部视图控制器。
我想要的是:将我的 4 个视图控制器放在我的滚动视图中(这工作正常,两个视图都添加到我的滚动视图中的代码中)并允许用户在视图之间滚动
当我滚动时,我有一个小动画将我的视图缩放到 50%,然后将它们重新缩放到 100%。
当我在 IB 中禁用“自动布局”时,一切都很好!我的动画和我的观点的位置。但是,我不能禁用它,因为我希望我的应用程序可以在 iPhone4 和 iPhone5 上运行。
我不知道如何实现我的约束以正确定位我的所有视图。我只是希望我的视图高度调整为 50 像素以适合 iPhone 4 屏幕。
这是我的 scrollViewConfiguration
- (void)configureScrollView{
/* On déclare le nombre de page la scrollview */
if (self.myCurrentEvent.isEvent)
{
self.numberOfScrollViewPages = 2;
}
else
{
self.numberOfScrollViewPages = 4;
}
/* On initialise le tableau qui va contenir les tableviews */
viewControllersArray = [[NSMutableArray alloc] init];
/* Tant qu'on a pas atteint le nombre de pages de la scrollview */
for (unsigned i = 0; i < self.numberOfScrollViewPages; i++)
{
/* On ajoute NSNull au tableau de tableview */
[self.viewControllersArray addObject:[NSNull null]];
}
[self.myScrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
/* On configure la content size en prenant la taille de la scroll view x le nombre de pages */
self.myScrollView.contentSize = CGSizeMake(self.myScrollView.frame.size.width * self.numberOfScrollViewPages, self.myScrollView.frame.size.height);
/* On désactive l'affichage du scroll horizontal */
self.myScrollView.showsHorizontalScrollIndicator = NO;
/* On désactive l'affichage du scroll vertical */
self.myScrollView.showsVerticalScrollIndicator = NO;
/* On désactive la fonction scroll to top */
self.myScrollView.scrollsToTop = NO;
/* On indique implémenter les fonction du son delegate */
self.myScrollView.delegate = self;
/* On affiche la première page */
[self loadScrollViewWithPage:0];
/* On affiche la deuxième page */
[self loadScrollViewWithPage:1];
if (!self.myCurrentEvent.isEvent)
{
[self loadScrollViewWithPage:2];
[self loadScrollViewWithPage:3];
}}
- (void)loadScrollViewWithPage:(int)page{
/* Si la page passée en paramètre est inférieure à 0, on sort de la fonction */
if (page < 0) return;
/* Si la page passée en paramètre est supérieur au nombre de page de la scrollview */
if (page >= self.numberOfScrollViewPages) return;
/* On récupère la référence vers la view contenu dans le tableau des tableview */
UIViewController *aViewController = [self.viewControllersArray objectAtIndex:page];
/* Si la vue récupérée est nulle */
if ((NSNull *)aViewController == [NSNull null])
{
switch (page)
{
case 0:
[self configureEventDescriptionViewController];
[self.viewControllersArray replaceObjectAtIndex:page withObject:self.myEventDescriptionViewController];
aViewController = self.myEventDescriptionViewController;
break;
case 1:
[self configureListOfContactViewController];
[self.viewControllersArray replaceObjectAtIndex:page withObject:self.myListOfContactViewController];
aViewController = self.myListOfContactViewController;
break;
case 2:
[self configureListOfExpensesCategoryViewController];
[self.viewControllersArray replaceObjectAtIndex:page withObject:self.myListOfExpensesCategoryViewController];
aViewController = self.myListOfExpensesCategoryViewController;
break;
case 3:
[self configureLinkContactViewController];
[self.viewControllersArray replaceObjectAtIndex:page withObject:self.myLinkContactViewController];
aViewController = self.myLinkContactViewController;
default:
break;
}
}
/* Si la superview de la vue est à nil */
if (aViewController.view.superview == nil)
{
[aViewController.view setTranslatesAutoresizingMaskIntoConstraints:NO];
CGRect frame;
frame.size.height = self.myScrollView.frame.size.height;
frame.size.width = 320;
frame.origin.x = page * 320;
frame.origin.y = 0;
[aViewController.view setFrame:frame];
/* On ajoute la vue courante à la scrollview */
[self.myScrollView addSubview:aViewController.view];
}
aViewController = nil;}
我设置 viewController 框架的部分只有在我禁用自动布局时才有效
我希望你明白我想说什么...
对不起,我的英语不好...
普威尔