Iphone 保存UIScrollView的视图

Iphone 保存UIScrollView的视图,iphone,uiscrollview,controls,save,segment,Iphone,Uiscrollview,Controls,Save,Segment,我正在构建一个应用程序,其中的一部分允许你滚动不同的图像进行叠加。我有一个分段控件来制作一种分层系统,其中每个分段都允许您再次滚动图像并建立层。由于某些原因,第一个图像总是粘住,当我返回到图层时,视图会重置为其原始位置,但也会保存最后一个位置 这是我的密码 - (void)layerControl { UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.w

我正在构建一个应用程序,其中的一部分允许你滚动不同的图像进行叠加。我有一个分段控件来制作一种分层系统,其中每个分段都允许您再次滚动图像并建立层。由于某些原因,第一个图像总是粘住,当我返回到图层时,视图会重置为其原始位置,但也会保存最后一个位置

这是我的密码

- (void)layerControl
{
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scroll.pagingEnabled = YES;
NSInteger viewCount = 8;
for (int i = 0; i < viewCount; i++) {
    CGFloat yOrigin = i * self.view.frame.size.width;
    UIImageView *filterViewOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [filterViewOverlay setImage:[filterManager objectAtIndex:i]];
    [scroll addSubview:filterViewOverlay];
    //[filterViewOverlay release];
}
scroll.contentSize = CGSizeMake(self.view.frame.size.width * viewCount, self.view.frame.size.height);
[self.view addSubview:scroll];
[scroll autorelease];

//Determine the current filter in view of the scroll view
CGFloat pageWidth = scroll.frame.size.width;
int cFilter = floor((scroll.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
currentFilter = cFilter;

}



//Method to add a filter to the page
- (void)addFilter:(id)sender
{
UISegmentedControl *filterController = (UISegmentedControl *)sender;

switch ([filterController selectedSegmentIndex])
{
    case 0: self.layerControl;

    case 1: self.layerControl;

    case 2: self.layerControl;

    case 3: self.layerControl;

    case 4: self.layerControl;

    case 5: self.layerControl;

    default: NULL;
}
}
-(无效)图层控制
{
UIScrollView*scroll=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];
scroll.paginEnabled=是;
NSInteger viewCount=8;
对于(int i=0;i
似乎每次调用self.layerControl时,您都在视图上创建一个新的UIScrollView。 所以旧的仍然在那里并且在旧的位置,但是您添加了另一个

可能会存储对每个UIScrollView的引用,并在layerControl的开头抓取给定索引的scrollview

因此:

然后在addFilter方法调用中:

[self layerControl:[filterController selectedSegmentIndex]]
而不是大开关的声明

顺便说一句,像所有那些self.layerControl调用那样使用点语法调用方法不是一个好主意。
在访问合成属性时,应该保留点语法。

看起来,每次调用self.layerControl时,您都在视图上创建一个新的UIScrollView。 所以旧的仍然在那里并且在旧的位置,但是您添加了另一个

可能会存储对每个UIScrollView的引用,并在layerControl的开头抓取给定索引的scrollview

因此:

然后在addFilter方法调用中:

[self layerControl:[filterController selectedSegmentIndex]]
而不是大开关的声明

顺便说一句,像所有那些self.layerControl调用那样使用点语法调用方法不是一个好主意。
在访问合成属性时,应该保留点语法。

好的,非常感谢!我是objective-C编程新手,所以我会记住你的.dot语法建议。再次感谢!我可以问一下case开关“case 0:scroll=self.scroll1”-“scroll1”指的是什么?Cheerrself.scroll1只引用一个保留属性,您将在该类的头中定义该属性。你会有卷轴1,卷轴2。。。scroll6和每个层都包含对每个层的scrollview的引用。。我试过了,但什么都没发生?很抱歉这么痛苦!在输入-(void)layerControl:(NSInteger)index方法(在我建议的代码之后)时进行调试,以确保正在设置层。基本上,这些代码是为了确保您始终有一个对您创建的层的引用,这样当您返回到该层时,您就有了它的句柄。好的,非常感谢!我是objective-C编程新手,所以我会记住你的.dot语法建议。再次感谢!我可以问一下case开关“case 0:scroll=self.scroll1”-“scroll1”指的是什么?Cheerrself.scroll1只引用一个保留属性,您将在该类的头中定义该属性。你会有卷轴1,卷轴2。。。scroll6和每个层都包含对每个层的scrollview的引用。。我试过了,但什么都没发生?很抱歉这么痛苦!在输入-(void)layerControl:(NSInteger)index方法(在我建议的代码之后)时进行调试,以确保正在设置层。基本上,代码的存在是为了确保您始终有一个对已创建层的引用,这样当您返回到该层时,您就有了它的句柄。