developing an infinite title slider with corresponding pageViewController - ios

ok, I wanted to create these custom controls I've seen in this app:
DownTown App
an infinite title slider above and an infinite page view controller below. you can scroll title infinitely and after scrolling finished, corresponding page controller scrolls to target viewController in that direction.
and you can can scroll the view controller below, and above titleSlider also scrolls with that.
so I create these components but the result is not exactly what I want, because there were some challenges I couldn't solve them. here you can download the component:
http://github.com/hashemp206/HAInfinitePageController
the first problem is as as I scroll titles, the target cell rest at center of view. but as I scroll faster and more you see the title is not resting at center and I have to manually move that cell to the center with animation.
to clarify how this title slider scrolls infinitely, I have created a UICollectionView with 3 section. when scrollView reaches an offset limit, I will jump back to the middle section.
the second problem is when I scroll the below pageController slowly, the above title slider moves well and correctly, but when I scroll faster this synchronization gets corrupted, and the title slider scroll can't synchronize itself with below page controller.
so I'm asking you expert guys, can you see my developed component and guess why it is not working well?
or if you want to challenge yourself can you develop this component exactly?

Related

Restricting the right scroll for scroll view at some conditions

I was working with scroll view with ten pages, user can scroll in both directions with gesture and button actions. But there are some situations in which a toggle button in view is on we need to stop right side scrolling up to user fills the data once he fills the data scrollview need to start scrolling again. one more situation is when toggle is on user need to skip all views and directly scroll to last view. I need to maintain page count on screen too.

Create Shazam Type UI ios Swift

I am trying to recreate a UIView I have seen in multiple apps, mainly Shazam. The top half of the screen has some interactive buttons, and the bottom half looks like a tableView with custom cells. When the bottom half is panned/swiped up, the tableView scrolls over the top half with velocity, much like a scroll view.
I have been researching this and experimenting for a couple days now. I have gotten close, but not quite there.
My last approach was a view that had a tableView inside it. When the view was panned, the view would move to wherever the finger moved it to, but then would not have any velocity afterwards. Also when the tableView was panned/swiped down, it wouldn't move the whole view down.
Before that I tried a scrollView that took up the whole length of the screen. That gave the desired effect, but the button wasn’t tappable, and you could scroll the view in the button area, which is undesired.
Does it utilize ScrollViews or is it using a tableView that acts much like a ScrollView somehow.
Here is the Shazam UI/UX I am looking to recreate:
The top portion has interactive buttons, and doesn’t scroll. The bottom half shows content and when scrolled, covers up the top portion.
Below is what I have tried so far: This one is the panning view, which sort of works, but doesn’t have velocity and the tableView doesn’t scroll the view back down.
Any thoughts on a direction I can take from here is greatly appreciated. I am using Swift.
Cheers
This sort of thing is perhaps best done with a collection view and a custom layout — you can have some items for which you set layout attributes absolute to the view, and others relative to the scroll content offset.
There's a great (if wandering) discussion of this and other techniques in the Advanced User Interfaces with Collection Views talk from WWDC 2014.
This is actually simple than it seems at first. Here's how you can achieve this:
Create a UIViewController (not a UITableViewController).
Add some buttons to the top area of the screen.
Add a table view spanning the entire view controller's view. Make sure the table view is on top of the buttons added in the previous step.
Configure the top cell of the table view to be transparent (by setting its background color to Clear). Set the background color on the table view to Clear as well. This way it won't obscure the elements at the top of the screen, unless the table is scrolled up.
Because your table view is now transparent, you'll need to explicitly set the background color on the table cells other than the top one.
Profit!

Scroll a view except a part of it

I want a screen with scroll, and I want to scroll until a part of the view. When I reach this, this part will be fixed on the top and you can go on scrolling. In the image:
You begin scrolling until the buttons part, then, the buttons stay fixed in the top and you can scroll more. It's like the spotify app effect in the lists, more or less, if you know it.
Thank you in advance
You could probably achieve this by implementing the -scrollViewDidScroll: method in your scroll view's delegate. When the view scrolls, check the offset to see if the button is visible. If it is, and if it's close to the correct position, you could remove it from the scroll view and position it above the scroll view in the position you want.

ios A tableview above a scroll view and the button on the scroll view cannot be tapped

I have a UIScrollView on my screen and there are some UIButtons on the scroll view.
I also have a UITableView which is above the scroll view, i.e. the tableview and the scrollview are overlapped.
Why I did this is because I want left and right swipe to flip pages of the scroll view and up/down swipe to show some text on the tableview.
This works fine except the button on the scroll view cannot be tapped. It seems that the tableview "absorbed" the tap event and it did not pass it to the button on the scrollview.
Is there someway to fix this? Thank you.
This could be a solution but I'm not sure of it because from your question I can't understand your problem very well, you can try it but if it doesn't work we will try a different way. Maybe the problem is the arrangement of the UI elements in your Interface Builder/Storyboard. If I correctly understood your situation you have something like this:
To make to UIButtons clickable you have to be sure they're at the highest level of arrangement inside the UIScrollView since the UITableView could cover them and "absorb" [as you said] the touch input. So my suggestion is: arrange your UI elements following the blue arrow in the picture below, placing the UIButtons on top, in this way they'll be 100% clickable.
If I didn't understand your question could you please shoot a picture like the one I've posted so I can understand it better?

UIScrollview, how to scroll a page under another window

I have a UISCrollview loading webviews, as the user starts scrolling to go to the next page, I need to have the the coming webpage to scroll into the screen from underneath another UIView that is stationary, I tried changing the alpha but its not really what I am looking for. how can I accomplish that?
For example, the scroll direction is top to bottom, now I have a uiview at the top of the screen which has some static data showing ( title, location, and other text labels ), and as the user scrolls down I want the content to scroll underneath the label ui view. Hope this clarifies it.
If I understand this question correctly I'd say you can't do this with a UIScrollView. Instead, you could have separate views for each UIWebView and handle the panning of one view under another with a UIPanGestureRecognizer.
Also, did you know there can be conflicts when using UIWebView's inside UIScrollView's?

Resources