Coder Social home page Coder Social logo

bawn / shazam Goto Github PK

View Code? Open in Web Editor NEW
87.0 4.0 19.0 6.82 MB

A pure-Swift library for nested display of horizontal and vertical scrolling views

Home Page: https://bawn.github.io/#blog

License: MIT License

Ruby 1.64% Swift 97.59% Objective-C 0.77%
swift page nestedscrollview pageviewcontroller ios scrollview menuview

shazam's Introduction

Hi there 👋

shazam's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

shazam's Issues

一个小缺陷

1、将第一个childscrollView上滑到老远
2、点击Menu切换至另一个childscrollView,下滑childscrollView使header和Menu恢复至原状
3、点击Menu切回第一个childscrollView
此时触摸header往下滑,header不会跟着往下滑,只有下面的childscrollView会跟着下滑直到childscrollView偏移为0时 header才能正常滑动

下拉刷新导致的滑动问题

不确定这个是不是我的姿势不正确,文章中提到在 child vc 分别实现下拉刷新,我使用了最简单的系统控件 UIRefreshControl.

大致代码:

override func viewDidLoad() {
    // ...
    let refreshControl = UIRefreshControl()
    tableView.refreshControl = refreshControl
    refreshControl.addTarget(self, action: #selector(refresh), for: .valueChanged)
}

@objc private func refresh() {
    DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) {
        self.tableView.refreshControl?.endRefreshing()
    }
}

诡异效果:

图一:下拉滑动刷新过程中,左右拖拽 mainScrollView

1

图二:下拉滑动刷新未结束时,切换到其他 VC, 刷新完成后不会回弹

2

切换 keepChildScrollViewOffset 没有区别,效果还是一样。

滑动header位置问题

有两个controller 第一个有两屏幕内容高度的cell,第二个半屏幕内容高度的cell,当第一个滑动将menuview 置顶时,切换到第二个controller,此时第二个controller向上滑动到顶显示出header,再切回第一个controller,controller还是原来的offsety但是header会出现

垂直滑动问题

任意一个 child vc, 左右滑动一下后松开,接着向下滑动,header 不会跟着滑动。

reproduce

为什么 ShazamTopView 只使用 userInteractionViews.first 响应事件?既然只用第一个,传 array 的意义是什么?

`//
// ShazamTopView.swift
// Shazam
//
// Created by bawn on 2019/1/24.
// Copyright © 2019 bawn. All rights reserved.
//

import UIKit

public class ShazamTopView: UIView {
....// 省略若干

override public func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
    ...// 省略若干
    var frames = [CGRect]()
    userInteractionViews.forEach { (item) in
        let frame = convert(item.frame, to: self)
        frames.append(frame)
    }
    for item in frames {
        let value = item.contains(point)
        return value // 为什么这里第一个就直接 return 了,既然如此,传一个数组的意义是什么?为什么不直接传一个 UIView 对象?
    }
    return false
}

}
`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.