Ios Xcode 5-具有恒定背景的滑动开关视图

Ios Xcode 5-具有恒定背景的滑动开关视图,ios,view,storyboard,uistoryboardsegue,uiswipegesturerecognizer,Ios,View,Storyboard,Uistoryboardsegue,Uiswipegesturerecognizer,我了解如何实现UISweepGestureRecognizer,但不了解如何与它协作正确使用多个视图 我的最终目标是提供一个圆滑的界面,在这里可以使用按钮或滑动来更改视图。我希望有一个恒定的背景,而不是背景图像显示它正在传输到完全相同的图像再次。我目前正在使用故事板,其中每个视图都有自己的控制器,如果可能的话,我希望将其保持在尽可能接近这种格式的位置,以便直观地了解正在发生的事情 我已经读到,对于这种场景,子视图可能是我最大的希望,让它们保持在右侧,直到调用滑动,但这会打破我当前使用的故事板结构

我了解如何实现UISweepGestureRecognizer,但不了解如何与它协作正确使用多个视图

我的最终目标是提供一个圆滑的界面,在这里可以使用按钮或滑动来更改视图。我希望有一个恒定的背景,而不是背景图像显示它正在传输到完全相同的图像再次。我目前正在使用故事板,其中每个视图都有自己的控制器,如果可能的话,我希望将其保持在尽可能接近这种格式的位置,以便直观地了解正在发生的事情

我已经读到,对于这种场景,子视图可能是我最大的希望,让它们保持在右侧,直到调用滑动,但这会打破我当前使用的故事板结构,并且肯定会破坏任何视觉清晰度


有人有什么建议吗

您可以使用导航来完成此操作。如果不需要导航栏,可以将其隐藏。您可以将左扫手势识别器连接到下一个控制器的segue,将右扫手势识别器连接到展开segue,或从其动作方法调用popViewControllerAnimated:。如果需要恒定的背景,则需要将其作为背景色添加到导航控制器的视图中,并使子视图控制器的视图透明或部分透明。导航控制器的根视图控制器中的此代码将添加背景:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"img.tiff"]];
}

您可以使用导航来完成此操作。如果不需要导航栏,可以将其隐藏。您可以将左扫手势识别器连接到下一个控制器的segue,将右扫手势识别器连接到展开segue,或从其动作方法调用popViewControllerAnimated:。如果需要恒定的背景,则需要将其作为背景色添加到导航控制器的视图中,并使子视图控制器的视图透明或部分透明。导航控制器的根视图控制器中的此代码将添加背景:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"img.tiff"]];
}

我完全知道你在说什么,我现在的项目也在做同样的事情

我通过使用Interface Builder和单个视图控制器实现了这一点。基本上,我在视图中放置了一个UIImageView,并将其设置为所需的背景,然后在其顶部放置了一个透明的UIScrollView。在滚动视图中,我放置了两个要水平滚动的视图


不要忘记启用UIScrollView分页。在我的例子中,我有两个表视图。从第一个开始,如果您从右向左滑动,它将滚动到下一个表视图,如果您从左向右滑动,它将滚动回第一个表视图。

我完全知道您在说什么,并且我正在对当前项目执行相同的操作

我通过使用Interface Builder和单个视图控制器实现了这一点。基本上,我在视图中放置了一个UIImageView,并将其设置为所需的背景,然后在其顶部放置了一个透明的UIScrollView。在滚动视图中,我放置了两个要水平滚动的视图


不要忘记启用UIScrollView分页。在我的例子中,我有两个表视图。从第一个开始,如果从右向左滑动,它将滚动到下一个表视图,如果从左向右滑动,它将滚动回第一个表视图。

我以编程方式执行了相同的操作,但您可以使用故事板实现相同的操作

一,。您需要保持相同背景的基本视图

二,。根据您的要求添加3个视图或2个视图,左视图、中视图、右视图和透明背景,如基本视图控制器的viewDidLoad中所示

[self addChildViewController:myChildViewController];

[myChildViewController view].frame = CGMakeRect(x,y,width,height);//Left one will have x = -320, y=0 ,Middle x= 0, y= 0, Right x = 32O etc.

 /* Add new view to source view */
 [self.view addSubview:[myChildViewController view]];

 /* Inform 'didMoveToParentViewController' to newly added view controller */
 [myChildViewController didMoveToParentViewController:self];
三,。在handle Swipe方法中,使用动画更改视图帧,使其看起来像是滑动页面 e、 g


我以编程的方式做了同样的事情,但您可以使用故事板实现同样的效果

一,。您需要保持相同背景的基本视图

二,。根据您的要求添加3个视图或2个视图,左视图、中视图、右视图和透明背景,如基本视图控制器的viewDidLoad中所示

[self addChildViewController:myChildViewController];

[myChildViewController view].frame = CGMakeRect(x,y,width,height);//Left one will have x = -320, y=0 ,Middle x= 0, y= 0, Right x = 32O etc.

 /* Add new view to source view */
 [self.view addSubview:[myChildViewController view]];

 /* Inform 'didMoveToParentViewController' to newly added view controller */
 [myChildViewController didMoveToParentViewController:self];
三,。在handle Swipe方法中,使用动画更改视图帧,使其看起来像是滑动页面 e、 g


谢谢,我将开始实施,如果/当我成功使用此方法时,我将进行升级投票。我对iOS比较陌生,所以可能需要一些时间。谢谢,如果我成功地采用了这种方法,我将开始实施,然后再进行升级投票。我对iOS比较陌生,所以可能需要一些时间。我对这种方法的担心是:你能像segue一样将变量从一个视图传递到另一个视图并重新加载吗?我在想一个焦点,它的信息被重新加载。因为它是一个单一的视图控制器,你甚至不需要传递变量。刷新数据的一种方法是通过读取UIScrollView的.contentOffset属性来确定当前显示的视图。通过这样做,您可以操纵当前视图上的数据,这表明了我对该问题的关注
s的方法是:您是否能够将变量从一个视图传递到另一个视图并像segue一样重新加载?我在想一个焦点,它的信息被重新加载。因为它是一个单一的视图控制器,你甚至不需要传递变量。刷新数据的一种方法是通过读取UIScrollView的.contentOffset属性来确定当前显示的视图。通过这样做,您可以在显示的当前视图上操作数据