All Projects → rickytan → Rtrootnavigationcontroller

rickytan / Rtrootnavigationcontroller

Licence: mit
Implicitly make every view controller has its own navigation bar

Programming Languages

objective c
16641 projects - #2 most used programming language
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Rtrootnavigationcontroller

Sailor
Easy page navigation and management in Flutter apps.
Stars: ✭ 142 (-93.13%)
Mutual labels:  navigation
Layerjs
layerJS: Javascript UI composition framework
Stars: ✭ 1,825 (-11.67%)
Mutual labels:  navigation
Material
A UI/UX framework for creating beautiful applications.
Stars: ✭ 11,870 (+474.54%)
Mutual labels:  navigation-controller
Aruco ekf slam
ArUco-based EKF-SLAM.
Stars: ✭ 142 (-93.13%)
Mutual labels:  navigation
Self Driving Golf Cart
Be Driven 🚘
Stars: ✭ 147 (-92.88%)
Mutual labels:  navigation
Redux Saga Router
A router for Redux Saga
Stars: ✭ 153 (-92.59%)
Mutual labels:  navigation
Mpc ros
Nonlinear Model Predictive Control on Differential Wheeled Mobile Robot using ROS
Stars: ✭ 140 (-93.22%)
Mutual labels:  navigation
Motion
Navigation and insight in Go
Stars: ✭ 163 (-92.11%)
Mutual labels:  navigation
Gta V Data Dumps
GTA V Data dumps useful for modding & scripting
Stars: ✭ 148 (-92.84%)
Mutual labels:  navigation
Locationsimulator
MacOS 10.15 / 11.0 application to spoof your iOS / iPadOS or iPhoneSimulator device location. WatchOS and TvOS are partially supported.
Stars: ✭ 157 (-92.4%)
Mutual labels:  navigation
Trail Sense
An Android app that uses your phone's sensors to assist with wilderness treks or survival situations.
Stars: ✭ 144 (-93.03%)
Mutual labels:  navigation
Spatial Navigation
Directional focus navigation with arrow keys
Stars: ✭ 146 (-92.93%)
Mutual labels:  navigation
React Native Nav Transition
React Native Nav Transition
Stars: ✭ 154 (-92.55%)
Mutual labels:  navigation
Mss
Marine Systems Simulator (MSS)
Stars: ✭ 142 (-93.13%)
Mutual labels:  navigation
Jquery Navobile
A jQuery plugin that makes mobile navigation easy.
Stars: ✭ 157 (-92.4%)
Mutual labels:  navigation
React Command Palette
An accessible browser compatible javascript command palette
Stars: ✭ 140 (-93.22%)
Mutual labels:  navigation
Metago
MetaGo provides fast cursor movement/selection for keyboard focused users in vscode
Stars: ✭ 151 (-92.69%)
Mutual labels:  navigation
Persistentbottomnavbar
A highly customizable persistent bottom navigation bar for Flutter
Stars: ✭ 165 (-92.01%)
Mutual labels:  navigation
Gallerit
A sample Android gallery to search images posted on Reddit built using modern Android development tools (Architecture Components, MVVM, Coroutines, Flow, Navigation, Retrofit, Room, Koin)
Stars: ✭ 153 (-92.59%)
Mutual labels:  navigation
React Site Nav
A kick ass site menu powered by styled components inspired by Stripe.
Stars: ✭ 155 (-92.5%)
Mutual labels:  navigation

RTRootNavigationController

CI Status Version License Platform

iOS 15

Apple has changed some behavior of UINavigationBar(see)on iOS 15, developers can override this on demands:

iOS 15 上苹果改变了导航条的部分默认行为,开发者可以自己重写:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // setup appearance
    if (@available(iOS 15.0, *)) {
        [[UINavigationBar appearance] setScrollEdgeAppearance:({
            UINavigationBarAppearance *app = [UINavigationBarAppearance new];
            [app configureWithDefaultBackground];
            // init app property
            // app.backgroundColor = xxx;
            // app.shadowColor = xxx;
            app;
        })];
    } else {
        // Fallback on earlier versions
    }

    return YES;
}

iPhone X

How many lines of code should I write to fit in iPhone X? Zero.

我需要写多少代码来适配 iPhone X?0。

iphone-x

Introduction

More and more apps use custom navigation bar for each different view controller, instead of one common, global navigation bar.

This project just help develops to solve this problem in a tricky way, develops use this navigation controller in a farmilar way just like you used to be, and you can have each view controller a individual navigation bar.

越来越多的应用为每一个 VC 设置单独的导航条,而不是之前那样使用一个全局统一的导航条,因为不同的 VC 有不同的视觉样式,前一个是蓝色的,后一个也许要做成红色、透明,或者干脆没有导航条。

虽然开发者可以在每个 VC- (void)viewWillAppear (想想为什么不是 - (void)viewDidLoad) 方法中设置自己所需的样式,但是在同一个导航条上来回修改,稍不注意就会导致样式混乱。另一种实现方式,是隐藏全局那个导航条,每个 VC 自己通过 addSubview:(UIView *)view 的方式自己设置导航条。这种实现是可行的,但是使用不方便了,如:

  • 无法使用 self.navigationItem.rightBarButtonItem 等来设置导航按钮,而必须自己手动往 navigationBar 上加;
  • 无法使用 self.title 来修改导航标题,而必须自己添加监听;
  • 无法方便地设置 navigationBarHidden
  • 无法方便地自动调整 contentInsets

等等。

本项目提供一种透明的方式,让开发者像以前一样使用导航器,同时,每个 push 进来的 VC 有自己独立的导航条。

Features

  • Custom navigation bar class support

  • Unwind support

  • Rotation support

  • Interactive pop enable and disable support

  • Interface Builder support

  • 每个 VC 支持自定义的 navigationBarClass

  • 支持 unwind(不知道什么是 unwind?请参考:这里

  • 支持转屏

  • 支持禁用交互式返回

  • 支持 Interface Builder

screenshot

scrreecap

Usage

As an advise, please set RTRootNavigationController as your rootViewController:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    UIViewController *yourController = ...;
    self.window.rootViewController = [[RTRootNavigationController alloc] initWithRootViewController:yourController];
    return YES;
}

you can implement following method to customize back bar button item (Recommended):

- (UIBarButtonItem *)rt_customBackItemWithTarget:(id)target
                                          action:(SEL)action
{
    return [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", nil)
                                            style:UIBarButtonItemStylePlain
                                           target:target
                                           action:action];
}

or just set useSystemBackBarButtonItem to YES and use the default one.

To run the example project, clone the repo, and run pod install from the Example directory first.

Notice(Only for below v0.6)

Your ViewController hierarchy will change to:

RTRootNavigationController
    `- RTContainerViewController
    |       `- RTContainerNavigationController
    |               `- YourViewController1
    `- RTContainerViewController
            `- RTContainerNavigationController
                    `- YourViewController2

So, if you access self.navigationController it returns a container navigation controller, and its viewControllers will always be 1, i.e. self. Instead, your have to use self.rt_navigationController.rt_viewController to get all siblings, as metioned Here and Here.

Requirements

  • iOS 7 and up
  • Xcode 7 and up

Installation

RTRootNavigationController is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "RTRootNavigationController"

Author

rickytan, [email protected]

Alternatives

Apps Integrated

License

RTRootNavigationController is available under the MIT license. See the LICENSE file for more info.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].