以编程方式控制UIScrollView

时间:2011-03-04 23:05:59

标签: iphone objective-c ipad uiscrollview

是否有以编程方式控制UIScrollView的方法?如同,获取其位置的值,沿着它滚动多远并改变其位置,以编程方式滚动它?

4 个答案:

答案 0 :(得分:4)

我不知道@Alexandergre或@JAgostoni在谈论什么。滚动UIScrollView非常简单。

我建议您查看UIScrollView的文档: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollView_Class/Reference/UIScrollView.html

要滚动UIScrollView,只需使用

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated

示例:

[myScrollView scrollRectToVisible:CGRectMake(20, 20, 320, 480) animated:YES];

这会将带动画的UIScrollView滚动到x轴上的20,y上的20和高度和宽度的320x480。

如果你想获取它自己的视图信息(例如哪个框架是可见的)你应该使用UIView中的方法和属性,因为它是UIScrollView的父级。 查看UIView文档:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

要获取可见的帧,请使用

myScrollView.frame;

请勿将其与内容大小混合

myScrollView.contentSize;

但是,正如我所说。 使用文档!

答案 1 :(得分:1)

您可以使用

滚动UIScrollView
scrollView.contentOffset = CGPointMake(x, y);

如果您希望动画滚动使用UIview动画

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationDelegate:self];
scrollView.contentOffset = CGPointMake(x, y);
[UIView commitAnimations];

要获取内容偏移量,请创建CGPoint以获取偏移值:

CGPoint value;
value = scrollview.contentOffset;

答案 2 :(得分:0)

Try this :-

 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView  willDecelerate:(BOOL)decelerate{
    //NSLog(@"%f %f", scrollView.contentOffset.y,  scrollView.contentSize.height);
 }
 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
     //NSLog(@"scrollViewDidEndDecelerating");
 }
 -(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
     //NSLog(@"scrollViewDidEndScrollingAnimation");
 }
//Update the value of rol
 -(void)scrollViewDidScroll:(UIScrollView *)scrollView{
     if(scrollView==MainScrollVw){//Main Scroll View All Fns Start,,,
         int rol_y= MainScrollVw.contentOffset.y;
         //int rol_x= MainScrollVw.contentOffset.x;

         if(rol_y>0){
            [UIView beginAnimations:nil context:nil];
            [UIView setAnimationDuration:.30];
            MainMenuVw.frame= CGRectMake(0 ,0 ,self.view.frame.size.width ,75);
            [UIView commitAnimations];

         }else{
            [UIView beginAnimations:nil context:nil];
            [UIView setAnimationDuration:.30];
            MainMenuVw.frame= CGRectMake(0 ,0 ,self.view.frame.size.width ,150);
            [UIView commitAnimations];

         }
      }
   }

答案 3 :(得分:-1)

是的。看一下这篇文章,如果有帮助请告诉我:http://jason.agostoni.net/2011/02/12/ipad-resize-view-to-account-for-keyboard/

它专门用于处理键盘,但我在那里解释如何获得滚动位置并设置它等等。当然,在Apple的文档的帮助下。