I know how to use qlpreviewcontroller, but i am curious to learn what actually happened behind the scene of the controller. I am looking for a way to implement my own custom preview controller that allows me to do paginated swipe, horizontal layout, programmatically scroll to page, etc. the issue really is being able to crack open the files and extract them as an image. I know that there are services that allow you to do so, but i prefer a client side solution if possible
Anyone have any suggestion / insight?
Related
I'm using one third party library for tabview in react native.ie, React-native-tab-view. I need to create this tabview as a sticky header in table view. Below is exactly how I need that. When I scroll the page the banner will go up but those 3 tabs remain on top. Can someone help on this, please?
I created a sample project on Github. It should do the trick. I used native animations, so I can only animate transform and opacity, which should be pretty fast. One of the problems though is that the nested navigators are not connected, but you should be able to do that. Can't be that hard :P
And for now the banner is shown even if you switch the tab, which may not be the behaviour you want. But I think overall this repo gives you a good starting point. At least I hope so :)
If you want to know how to nest navigators with views in between them you can have a look at a second repo on Github I made today for another SO question. Maybe I'll write a Medium post about this topic. Depends on my spare time I guess :P
So far I have been working with NavigationController. It's great for hierarchical navigation.
But, how do I implement a slide out menu that exists on every page, and is able to jump to any page?
Not caring about the design, I guess we would need to load/unload xib files manually to the superview?
Is this a good practice?
Probably the best way to get you going is to implement/check some of the already developed open source solutions.
Please, check out:
MMDrawerController which is a simpler version
and MSDynamicsDrawerViewController which is a bit more complicated (to develop) because it uses iOS 7 Dynamics.
Cheers.
I am trying to create an app for which I need a way to swipe through views. For example, while swiping through images in photo stream or camera roll. I DO NOT need to swipe through images however, I need to swipe through UIViews. I have been looking at PageViewController. However, setViewControllers:direction:animated:completion: suggests that I need a ViewController for every UIView. This doesn't seem to be what I want since I will have over 40 views that I will need to scroll through. I think I'm missing an obvious ios feature here since even iBooks has a way to go through pages of books.
I was thinking maybe having 3 ViewControllers and changing their content whenever I swipe across. But that seems very roundabout.
Please help me out!
Thanks!
Apple has provided a fairly robust example of doing this kind of thing with photos called "PhotoScroller" at http://developer.apple.com/library/ios/#samplecode/PhotoScroller/Introduction/Intro.html. It uses UIScrollViews and CATiledLayers to recreate the experience of the Photos app. You may be able to modify it to work with your UIViews instead of images.
Trying to develop a test app wherethe look is like ebook. user can flip the pages. However, app will have 40-50 pages to go through. Is there anyway to just update one view and even after re using you can easily turn it over and back. or do I have to create more views to achieve objective.
Can someone pls provide suggestion on which technique to use to solve this issue and also what to use for flipping like ebook?
Since you have tagged your question with iOS5 you can use a UIPageViewController (see also this one) to handle this behavior for you (datasource handling, gesture handling etc.). The logic behind it is that you provide an array of view controllers where each one controls and provides content for a page in your book.
One way is, please look in to "page base application". Please create a new project as page base application and work on that. You will find good amount of documentation online for this.
I'd need to create a iPad-app which would be rendering multiple PDF-Files (one file contains one page).
Each page should be scrollable, zoomable and if the user taps on a part of the PDF a website or photo gallery should popup.
Currently i think i could do that either with:
A. UIWebView
Displays the pdf's nicely, scrolling and zooming works. But it looks like a lot of trouble to realize the clickable parts of the PDF.
I don't know if i could use CGPDFContextSetURLForRect
Getting the touch-events from UIWebView to do something like CGPDFContextSetURLForRect my self looks like it would be some "quite bad" hack. See: http://github.com/psychs/iphone-samples/blob/master/WebViewTappingHack/Classes/PSWebView.m
B. Quartz
I found some resources describing how to display PDF's directly via Quartz.
See:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html
This would allow using CGPDFContextSetURLForRect
But i have no idea if this would - like UIWebView - support scrolling and zooming out of the box?
Anybody could enlighten me on this please?
Thanks for your time!
[Edit: changed 3.0 to 3.2]
[Edit: my "solution"]
Hi!
I could come up with a working implementation for PNG but not for PDF's.
[Abstract]
My sollution was Rendering the content, intercepting the touches on it, retreiving the coordinates relative to the displayed content if it is one touch and finally looking up what to do from a mapping containing the interactive areas as coordinates and what to do if they get clicked.
[For PNG]
It was way more cumbersome to implement somethink like that than i would have imagined...
And the implementation i got working depends heavily on the content you want to display because this does work for UIImageView but i could not get it working with UIWebView.
First you need a UIScrollView and UIImageView to render the content and support scrolling/zooming.
Then you need to implement some handling to get the touches/gestures you are interested in.
See: developer.apple.com/iphone/library/samplecode/ScrollViewSuite/Listings/1_TapToZoom_Classes_TapDetectingImageView_h.html
This sample from apple provides everything you need to get this part working.
As a bonus it also takes care about transforming the coordinates relative to the viewport of the content which is very handy! (else you would only know where the tap happend on the screen wich only one half of the info you need if your content is zoom-/scrollable)
[For PDF]
If you want to do this with PDF the first thing would be that you need to use a UIWebView (probably you could do it via Quartz or something else too)
Getting the touches with a UIWebView is a real pain!
There are a lot of ways proposed on the web and besides one noone did what it should do.
After days of googling i found this gem: cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html
So... subclassing UIWebView does not get you anywhere unlike UIImageView and you have to subclass UIApplicationMain and implement its method for handling touch-events.
Here you could reuse some of the "Touch-Handling-Stuff" from the apple-examlpe from above.
Now you would need to translate the coordinates of the touch to your content if it is zoom-/scrollable. UIWebView DOES NOT do this for you unlike UIImageView!
I could never figure out how to get the required information(what part of the content at which zoomlevel) from a UIWebView to translate the coordinates but due to the changed requirements from PDF to PNG i didn't care to get it working too much.
hope this helps.
Using the CGPDF* operators will allow you to write a UIPDFView, which operates exactly as UIImageView but uses a PDF as the source image. Create your own custom subclass of UIView and implement drawRect: to, eventually, call CGContextDrawPDFPage. Based on a quick Google search (because I know the keywords), this page seems to explain that side of things quite well.
You can then directly substitute your custom UIView subclass for the UIImageView and proceed exactly as you have with the PNG solution.