当用户在UITable View中滚动到Y偏移量0.0以下时,我试图拉下UIView(如下拉菜单)。如果用户下拉到-80.0 Y-Offset以下,那么PullDownMenu将自行锁定,直到用户向另一个方向滚动。
我对UITableView的ScrollView的实现如下:[ lock:false 最初]
-(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;
}
}
- (void)setScrollViewOffset:(UIScrollView *)scrollView offsetTo:(CGPoint)offset {
- (void)setScrollViewOffset:(UIScrollView *)scrollView offsetTo:(CGPoint)offset{
isChangingOffset = true;
scrollView.contentOffset = CGPointMake(0, -80.0);
isChangingOffset = false;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
float x = scrollView.contentOffset.y;
begginOffset = x;
doneDragging = false;
if(lock){
resetDrag = true;
}
}
- (void)scrollViewDidEndDragging :( UIScrollView *)scrollView willDecelerate:(BOOL)减速
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
doneDragging = true;
}
以下是有关其外观的工作视频:Video
蓝色是我在UITableView中添加为子视图的UIView。
我的问题是,我试图拉下一个UIView,让我们根据UITableView的contentOffset调用它的menuView(不是tableView的子视图)。我可以简单地在UITableView中添加menuView,就像我添加了蓝色视图一样。但这只能通过表格访问,也就是当我滚动到顶部并向下拖动时。但我希望menuView可以随时像通知中心一样“拉动”。 在使用滚动视图的Y-contentOffset时,菜单视图下拉动画不平滑。它会中途停止或过低。它是生涩的,并不总是一样的。我该如何实现呢?
答案 0 :(得分:2)
此处为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;
}
除此之外,您可以从代码或界面构建器中添加您想要的wat。
对于PullDownMenu,你可以看到这个GitHub:
希望这可以帮助您并简化您的代码;)