-
Notifications
You must be signed in to change notification settings - Fork 999
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iOS: three column layout on iPad #817
Comments
Transferring from #1247, @samuelclay wrote:
I can't find a video of how Reeder works, but I can imagine. There are certainly a number of ways it could be supported, which could be useful for both iPad and Mac. The easiest would be a control like on the NewsBlur website to choose between the current two-pane view and a three-pane view. Probably iOS would default to two-pane, and macOS would default to three-pane. Animation could be used when switching modes, or moving between views. A lot of the layout issues we've had with iPad is due to the way the container view controller lays out views on top of each other. Going for more of a sliding approach, with three panes side-by-side-by-side, and just resizing or sliding off screen, might make that tidier. We could also consider moving to a standard |
We started with a splitviewcontroller back in 2012 and abandoned it because it didn't fit our needs for story titles on left vs on right. I'd be happy to go back to it, as the current layout is broken on catalyst and is wonky on iPad sometimes when returning to the app (although that's been fixed, it keeps popping back up). I believe this work should come before catalyst as it's needed to improve catalyst. |
Yeah, using Apple's APIs is usually better than rolling our own, though not always. I think you meant to say story titles on left vs bottom, which is a good point; that wouldn't be automatically supported with a split view controller, though could still be done in much the same way as now, just within the detail pane. (It's a pity that UIKit's split view is less flexible than AppKit's; the latter supports more than two panes, plus vertical orientation in addition to horizontal. But we can make it work.) I'll investigate further to decide on the best approach, but I'm leaning towards going with I agree that this is a prerequisite for Catalyst, so I'll do this first. |
I've got a working prototype using nested |
Excellent, I'm looking forward to this! |
- Fixing warnings. - Adding Swift subclasses of ObjC ones.
- Numerous changes for three-column layout support and other projects. - Work in progress.
Work on this is underway! I have made extensive changes to the app in the Catalyst branch to modernize the app to support multiple projects: three column layout, plus of course Catalyst (#1247) to run on a Mac, multiple windows (#1264), vertical scrolling gestures (#1351), better full-screen operation (#1338), and modern state restoration (#1304), which may also provide Handoff support, and more. One of my goals is to eliminate some unnecessary platform-specific functionality, since the app running on an iPad can be put into split view and work like on iPhone, and of course to support Mac too via Catalyst. I also want to eliminate custom layout stuff, since that is the primary source of drawing bugs — so using a standard This is still a work in progress; the app in this branch is currently in a rather disassembled state, with unfinished parts (e.g. the stories are currently missing), and several known bugs. But it already supports three columns (options for two columns will be added later), and other infrastructural changes to support all of those projects. Note that building this requires Xcode 12 (currently in beta), and three columns are only supported on iPadOS 14 and macOS 11. When I'm done, it'll work in two-column mode on iOS 13, but that isn't finished yet. (iPadOS 14 introduced native support for three column split views, so I didn't need to do my less ideal prototyped solution. Native support is much better.) If you try it, don't bother reporting issues yet; I have a list. I'll tag the related GItHub issues as I work on each aspect, though some work will benefit multiple issues. Here's a screenshot for your enjoyment: |
Lovely! My advice is don't bother with iOS 13 support, as people who don't upgrade can still use the older version of the app. And a rewrite is a good time to force an upgrade to latest. |
Fair enough, that'll make it simpler. I assumed you wouldn't want to drop older OS versions, but you're right that it's reasonable to require it. It'll be an exciting update! |
- More progress on the story pages stuff.
More progress; the stories are now appearing (in a somewhat broken way), and supporting scrolling horizontally or vertically (for those two options, plus the #1351 gestures in vertical scrolling request). Still lots to do, and too broken to be worth playing with yet, but getting there. Here's a screenshot: |
- Lots more progress on the detail view and other areas.
Lots more progress. The stories are working pretty well now. Still some issues, e.g. first time use, and I haven't tested iPhone yet, but getting there. It could be decent enough to try if you like. You can swipe between stories vertically or horizontally (at the same time, for #1351), collapse one or both of the sidebars, etc. Here's another screenshot: |
Wow that's an amazing experience. I can see this is going to be transformative for the app. Nice work! Greatly looking forward to getting this on iPhone and in portrait mode on iPad. |
I plan to work on it later this week. I'm aware of a bunch of bugs, but if you like you can list the most egregious ones, to make sure I address them. Just mention them in comments here, rather than in new issues. |
- Scrolling story instead of pages. - Change pages vertically only when at the top or bottom of a story.
- Fixed sporadic crash when changing pages.
- Fixing several issues, including crash on launch due to loading the feed detail multiple times.
- When rotating iPhone from portrait to landscape, the feed detail now appears correctly. - Eliminated some popping; changing columns works differently with the split view.
A bunch more fixes and improvements, including the vertical scrolling issue and crashers. I'll do more in a couple of weeks, but if you deem it good enough, you could do a TestFlight now. Either way, feel free to comment with bugs. |
In the dark theme there are a couple of stray bright dots and the bottom bar in the feeds list seems to need to be a bit wider. Swiping horizontally between articles doesn't work immediately when you launch the app on iPad; tapping the full screen story view (double arrow) button makes it work, then you can exit the full screen and continue to swipe horizontally. Otherwise, so far seems a lot smoother/less buggy. (Deleted my prior comment; it is still the case but doesn't actually seem to be new with this branch.) |
Full-width images are sometimes offset so they're off the right side of the screen, then sometimes they aren't full-width either. I can't get the tap-hold-on-image behavior to display alt text and zoom to activate any more. |
None of the keyboard shortcuts to get back to the dashboard from the story list are working. Thinking about this more carefully, the dashboard really isn't a separate view any more, so maybe those shortcuts should do the same thing as 'show/hide sidebar'? As someone who exclusively browses in All Stories, the only reason I ever go back to the dashboard is to refresh the story list. Showing the sidebar then using "Open All Stories" does the same thing in the new version. Finally, noticing that the story view doesn't slide smoothly from one story to another any more; the view flashes instead. |
Thanks for getting those updates out, I'm now on the latest build again. It's looking better! I also am missing the sliding action when tapping next and previous. It helped with getting my bearings around a feed as I go back and forth. Would be best to replicate the old behavior of sliding over a space equal to the distance (# of reads before an unread) between stories. On my iPhone SE I find that I often can't scroll a story after loading it. And both vertical and horizontal scrolling are enabled, which feels odd. We should turn the other off. Also, often when scrolling and I lift my finger, the full-screen mode is disabled. I'd like to have full screen mode not enabled on a tap. I seem to recall you wanted that tap in there, but at the very least it should not fire as often as it does. Lastly, I'm seeing a "You must be premium" notice on the story list pretty regularly when I first go into the app. I use the dashboard widget mostly and it's been throwing me for a loop and just opening to a blank story list. It's a bit orthogonal to this work, but it's in the same code paths as story layout. |
- Since the UIPageViewController approach to paging had multiple issues that were proving impossible to work around, I decided to revert to the old UIScrollView-based approach.
- Restored the old scroll direction preferences, since I’ve removed the UIPageViewController approach (see #817). - I’ll come back to this feature enhancement later, with a different solution.
- Story pages view controller appearance tweaks.
- More iPhone & iPad fixes. - Fullscreen fixes. - Disabled the tap to toggle fullscreen. - Restored the old-style fullscreen toggle by pulling down when at the top.
While I was redoing the infrastructure of the app to support the three column layout, I took the opportunity to implement a solution for #1351 at the same time, using nested So, I decided to revert to the old I also disabled the tap to toggle fullscreen, and changed it to hide the nav bar when scrolling, and show when pulling down at the top. Plus, I fixed a bunch of issues on iPad and iPhone with the three-column layout. That is working rather well now. I think the app is in better shape now. Still a few minor issues and cleanup to do, but feel free to kick the tires. |
- Fixed not showing feed detail content for feed when first launched on iPhone.
Updated to your latest version. Do you want me to start filing separate issues on these? New issues I noticed:
Old issues (are you able to reproduce these?)
|
Yes, please add separate issues for problems with the Catalyst branch (including those), using the title prefix "iOS Catalyst:", and tags "iOS" and "high" or "medium" as appropriate. Anything that's a regression should be high priority. I'll close this issue once I've cleaned up the code to remove redundant stuff, which I'll do once I've fixed any remaining problems. We're getting there! |
Agreed, this build is great. Would you prefer I release a TestFlight now or wait until you've had a chance to run through some of the tickets @nriley filed? |
Up to you. I just had a quick look at those issues, and none of them seem fatal problems, so you could do a TestFlight if you like. Note that I will next be working on NewsBlur in the week ending March 27 (I've got some other stuff I need to do in the meantime), so you could treat this time as an opportunity to gather more issues via TestFlight, or might not want to leave people waiting for updates that long. (And if anyone else wants to contribute fixes to any of @nriley's issues, feel free; there's more than enough to keep me busy when I do resume.) |
Only one of them is a crasher (#1426); the rest are just cosmetic/annoying. Perhaps worth adding to the TestFlight release notes as known issues so we don't get duplicate reports. (Wish I had more time to work on NewsBlur right now but I don't.) |
- Fixed issues with the feed detail when rotating a Plus/Max phone to landscape.
- Fixed displaying popovers on iPhone in landscape on Plus/Max devices.
- When using top or bottom layout on iPad, now includes the feed detail menu in the nav bar. - Fixed an empty middle column when switching from top or bottom layout to left layout.
- Removed the obsolete container view. - Tweaked a few places that still used it.
- Cleanup and removal of obsolete code and resources.
Idea: the web app has a three-column layout (feeds, detail, story). This could be done in the iPad app too, perhaps with a narrow column on the left side, just wide enough for icons, which expands to show the full width when tapped, perhaps via a slide-over animation, or making the second column narrower till an item is tapped.
On iPad Pro, there's enough room for full width of all three columns.
The text was updated successfully, but these errors were encountered: