Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 基于UIScrollView的内容偏移量移动UIView_Ios_Cocoa Touch_Uitableview_Animation_Drop Down Menu - Fatal编程技术网

Ios 基于UIScrollView的内容偏移量移动UIView

Ios 基于UIScrollView的内容偏移量移动UIView,ios,cocoa-touch,uitableview,animation,drop-down-menu,Ios,Cocoa Touch,Uitableview,Animation,Drop Down Menu,当用户在UITable视图中滚动到Y偏移量为0.0以下时,我尝试下拉UIView(如下拉菜单)。如果用户向下拉至-80.0 Y偏移以下,则下拉菜单会自动锁定,直到用户向另一方向滚动 我对UITableView的ScrollView的实现如下:[lock:falseinitially] -(void)scrollViewDidScroll:(UIScrollView *)scrollView { if(isChangingOffset) return; if(res

当用户在UITable视图中滚动到Y偏移量为0.0以下时,我尝试下拉UIView(如下拉菜单)。如果用户向下拉至-80.0 Y偏移以下,则下拉菜单会自动锁定,直到用户向另一方向滚动

我对UITableView的ScrollView的实现如下:[lock:falseinitially]

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if(isChangingOffset)
        return;
    if(resetDrag)
    {
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
        resetDrag = false;
    }
    float xx = scrollView.contentOffset.y;
NSLog(@"Offset :%f",xx);
    if(xx - begginOffset > 0.0 && lock && !doneDragging)
    {
        offsetChange = xx - begginOffset;
        begginOffset = xx;
        lock = false;
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
    }
    if(lock){
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
    }
    if(xx <=-80.0)
    {
        [self setScrollViewOffset:scrollView offsetTo:CGPointMake(0, -80.0)];
        lock = true;
    }
}
-(无效)scrollView将开始刷新:(UIScrollView*)scrollView

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    float x = scrollView.contentOffset.y;
    begginOffset = x;
    doneDragging = false;
    if(lock){
        resetDrag = true;
    }
}
-(无效)ScrollViewDiEndDraging:(UIScrollView*)scrollView将减速:(BOOL)减速

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    doneDragging = true;
}
下面是一段视频,介绍它的外观:

蓝色是我在UITableView中作为子视图添加的UIView

我的问题是,我正在尝试下拉UIView,让我们根据UITableView的contentOffset将其称为menuView(它不是tableView的子视图)。我可以简单地在UITableView中添加menuView,就像添加蓝色视图一样。但这只能通过表格访问,也就是当我滚动到顶部并向下拖动时。但我希望menuView可以像通知中心一样随时“拉”出来。
使用“滚动视图”的Y-contentOffset时,menuview下拉动画不平滑。它会中途停下来,或者太低。它是干的,并不总是一样的。如何实现这一点?

这里是您的
UIScrollView的示例代码:

ViewController.h

@interface ViewController: UIViewController {

    UIScrollView *scrollView;
}

@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
ViewController.m

@implementation ViewController

@synthesize scrollView;

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self scrollView];
    }

    - (void)scrollText{

        [scrollView setContentSize:CGSizeMake(320, 800)];
        scrollView.scrollEnabled = YES;
        scrollView.pagingEnabled = YES;
        scrollView.clipsToBounds = YES;

    }
您可以从代码或界面生成器中输入所需的内容

对于下拉菜单,您可以看到以下GitHub:


希望这能帮助您简化代码;)

我认为最好将所有内容嵌入到
UIScrollView
中,因为它更简单,执行速度更快,您可以设置上下边界、分页和更多功能,如果需要,我为
UIScrollView
提供一个包含UIView和UITableView的scrollView的示例代码?scrollView是一个带有scroll的视图,可以包含您想要的内容、其他视图、TableView、按钮、标签、文本字段等,您可以设置一个长5000px的滚动视图,并将其分页为480或568;)ned代码?但这将如何帮助我创建一个类似于系统的下拉菜单?你可以使用UiScrollView在点击按钮时显示一个下拉菜单,或者在我的answare中查看下拉菜单我给你发了一个示例代码链接我认为UITableView已经实现了UiScrollView。此外,这也不会帮助我实现通知中心一样的下拉菜单,或下拉菜单类似的一个视频。或者我遗漏了什么?可能你必须重新构建应用程序,但我相信这可以帮助你,我的答案MBPullDownController上的链接是视频的完整项目代码;)
@implementation ViewController

@synthesize scrollView;

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self scrollView];
    }

    - (void)scrollText{

        [scrollView setContentSize:CGSizeMake(320, 800)];
        scrollView.scrollEnabled = YES;
        scrollView.pagingEnabled = YES;
        scrollView.clipsToBounds = YES;

    }