Coder Social home page Coder Social logo

fdstatusbarnotifierview's Introduction

No more in active development...

FDStatusBarNotifierView is a view that lets you display notifications and messages using the space in which the status bar resides.

Screenshot

Usage

It’s as easy to use as UIAlertView, here is an example:

// from a view controller
FDStatusBarNotifierView *notifierView = [[FDStatusBarNotifierView alloc] initWithMessage:@"Hello!"];
notifierView.timeOnScreen = 3.0; // by default it's 2 seconds
[notifierView showInWindow:self.view.window];

// or from a view controller with a navigation bar
[notifierView showAboveNavigationController:self.navigationController];

When you call showInWindow: the status bar disappear and the notifier view takes its place with a smooth animation.

Installation

The easiest way to install this component is via CocoaPods.

Add the following line to your podfile:

pod 'FDStatusBarNotifierView'

Then run the pod install command and import FDStatusBarNotifierView.h where you plan to use the notifier view.

You can also install this manually. Just drag FDStatusBarNotifierView.h and FDStatusBarNotifierView.m in your project and import the .h file where you want to use this component.

Advanced usage

Manually hide

In some circumstances (e.g. informing the user of network activities), you may want to manually hide the component.

To do so just set the manuallyHide property to YES. Then hide calling the hide method.

notifierView.manuallyHide = YES;

// do some stuff

[notifierView hide];

Hide on tap

If you set the shouldHideOnTap property to YES when the user taps the message it will be hidden.

Scrolling message

If the message you want to display doesn’t fit in the status bar it will be animated and scroll horizontally to display the full text.

Delegate methods

I've also created some handy self-explanatory delegate methods, if you need them.

- (void)willPresentNotifierView:(FDStatusBarNotifierView *)notifierView;  // before animation and showing view
- (void)didPresentNotifierView:(FDStatusBarNotifierView *)notifierView;   // after animation
- (void)willHideNotifierView:(FDStatusBarNotifierView *)notifierView;     // before hiding animation
- (void)didHideNotifierView:(FDStatusBarNotifierView *)notifierView;      // after animation
- (void)notifierViewTapped:(FDStatusBarNotifierView *)notifierView;       // user tap the status bar message

Contribute

Feel free to help out by sending pull requests or by creating new issues.

TO DO

  • Add support for multiple orientations (currently only portrait is supported).
  • Properly manage the animation queue, to avoid unexpected behavior when showInWindow: is called multiple times.

Contributors

  • ZachOrr: iPad support, hide on tap, better handling of device’s screen sizes.
  • dbsGen: if the message to display doesn’t fit in the status bar, it will scroll horizontally.
  • Luca Bernardi: CocoaPods support, manual hiding.
  • Stephen Williams: iOS 7 support and more

License

See the LICENSE file (MIT).

fdstatusbarnotifierview's People

Contributors

frankdilo avatar gpoitch avatar h0lyalg0rithm avatar luca-bernardi avatar mmccroskey avatar onato avatar zachorr avatar

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

fdstatusbarnotifierview's Issues

Status bar disappears instead of being replaced

When I display a notification the status bar disappears and the animation instead of happening over the status bar happens over the navbar.

Here is the status bar before showing the message:
img_1862

Here the status bar disappeared and the notification is drawn over the navbar:
img_1863

For sure I am doing something wrong but I don't know what. I have deselected the "Under Top Bars" option for the TabViewController and added UIViewControllerBasedStatusBarAppearance to the plist.

Any ideas? //cc @onato

Text doesn't align center when flat on a table

Not sure if this has been done intentionally, but when the iPhone is laid down at a flat angle, after being in portrait where the label is centered, if the notification is called again, the label is off center.

Hardcoded dimensions

Dimensions shouldn't be hardcoded and instead depend on the screen resolution (this will not look right in the iPhone 5 :) )

I'm referring to this:

#define kNotifierViewInitialFramePortrait   CGRectMake(0, 20, 320, 20)
#define kNotifierViewFinalFramePortrait     CGRectMake(0, 0, 320, 20)

#define kMessageLabelInitialFramePortrait   CGRectMake(10, 0, 300, 20)
#define kMessageLabelInitialFrameLandscape  CGRectMake(10, 0, 460, 20)

Crash on iOS5

the following code is iOS6+

NSDictionary *attributes = @{NSFontAttributeName:self.messageLabel.font};

move the line to

} else {
    // Load resources for iOS 7 or later

will fix it.

iOS 6 Scrolling text

In iOS 6, long strings don't show at all if they have to scroll. The status bar goes blank, and the default clock, etc never returns.

status place not recover bug

show at beginning for a navigation tabBar app, the status bar is not recover after the application load finish.

please update podspec to a new version

FDStatusBarNotifierView is still using v0.1.0 tag which is 11 months old on CocsPods Repo, there are a lot of changes since then, please update a new version, thanks.

Rotation isn't working

When trying to rotate the sample project to landscape mode, it's not working properly.

viewFrame moved when Extend Edges - Under Top Bars enabled

When Extend Edges enabled(possibly because translucent nav bar), top layout guide which example views(button, and textfield added in sample project) constrained to is moved up along with setStatusBarHidden:YES called.

This cause all content view(should not move by viewFrame setting) moved. In this case, viewFrame not changed, only constraints reference(top layout guide) of each view changes.

And if UIScrollView added to view(and also Extend Edges enabled), it's contentOffset and contentInset automatically modified so that the scrollView seems moving up along with status bar moving up.
Setting scrolling subview's contentInset and contentOffset unchanged before and after status bar hidden, it resolves scrollView moving up. (But some issues remaining like "how to set every scroll views' inset and offset unchanged and make it back when Status Bar returns" and "scroll view scrolling stops during some moments with inset and offset changes")

There need robust control in condition of Extend Edges case.
I didn't use auto layout, but someone use auto layout.
And I think Mailbox use similar technique to show notifier view. They dismiss notifier view only when scrolling in scroll view stops to avoid issue that I mention.

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.