Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
github.com/jonyfang/ffpopup
FFPopup is a lightweight library for presenting custom views as a popup.
Bounce from Top & Bounce to Bottom | Bounce from Top & Bounce to Top | Bounce in & Bounce out | Grow in & Shrink out | Bounce from Bottom & Slide to Bottom | Slide from Bottom & Slide to Bottom |
---|---|---|---|---|---|
Support several popup show types
Support several popup dismiss types
Layout the popup in the horizontal direction
Layout the popup in the vertical direction
Controlled whether to allow interaction with the underlying view
Others
To run the FFPopup
project, clone the Repo, and start FFPopup
in Xcode.
$ git clone https://github.com/JonyFang/FFPopup.git
$ cd FFPopup
$ cd Shell && sh install-bundle.sh && sh install-pods.sh && cd ..
$ open FFPopup.xcworkspace
There are three ways to use FFPopup
in your project:
CocoaPods
Carthage
Manually
installCocoaPods is a dependency manager, which automates and simplifies the process of using 3rd-party libraries like FFPopup
in your projects. First, add the following line to your Podfile:
pod 'FFPopup'
If you want to use the latest features of FFPopup
use normal external source dependencies.
pod 'FFPopup', :git => 'https://github.com/JonyFang/FFPopup.git'
This pulls from the master branch directly.
Second, install FFPopup
into your project:
$ pod install
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate FFPopup
into your Xcode project using Carthage, specify it in your Cartfile
:
github "JonyFang/FFPopup"
Run the following command to build the framework:
$ carthage update
Drag the built FFPopup.framework
binaries from Carthage/Build/iOS
into your application’s Xcode project.
On your application targets’ Build Phases
settings tab, click the + icon
and choose New Run Script Phase
. Create a Run Script
in which you specify your shell (ex: /bin/sh
), add the following contents to the script area below the shell:
/usr/local/bin/carthage copy-frameworks
Add the following paths to the frameworks you want to use under Input Files
.
$(SRCROOT)/Carthage/Build/iOS/FFPopup.framework
For an in depth guide, read on from Adding frameworks to an application
Alternatively you can directly add the FFPopup.h
and FFPopup.m
source files to your project.
FFPopup.h
and FFPopup.m
onto your project (use the "Product Navigator view"
). Make sure to select Copy items
when asked if you extracted the code archive outside of your project.FFPopup
wherever you need it with #import "FFPopup.h"
.Even though FFPopup
is written in Objective-C, it can be used in Swift with no hassle. If you use CocoaPods add the following line to your Podfile:
use_frameworks!
If you added FFPopup
manually, just add a bridging header file to your project with the FFPopup
header included.
Import the library where you want to use it.
#import <FFPopup.h>
- (void)showPopup {
FFPopup *popup = [FFPopup popupWithContentView:self.contentView showType:FFPopupShowType_BounceIn dismissType:FFPopupDismissType_ShrinkOut maskType:FFPopupMaskType_Dimmed dismissOnBackgroundTouch:YES dismissOnContentTouch:NO];
FFPopupLayout layout = FFPopupLayoutMake(FFPopupHorizontalLayout_Center, FFPopupVerticalLayout_Center);
[popup showWithLayout:layout];
}
import FFPopup
func showPopup() {
let popup = FFPopup(contentView: self.contentView, showType: .bounceIn, dismissType: .shrinkOut, maskType: .dimmed, dismissOnBackgroundTouch: true, dismissOnContentTouch: false)
let layout = FFPopupLayout(horizontal: .center, vertical: .center)
popup.show(layout: layout)
}
Animation transition for presenting contentView. Controlled how the popup will be presented.
The default value is FFPopupShowType_BounceInFromTop
.
FFPopupShowType |
---|
FFPopupShowType_None |
FFPopupShowType_FadeIn |
FFPopupShowType_GrowIn |
FFPopupShowType_ShrinkIn |
FFPopupShowType_SlideInFromTop |
FFPopupShowType_SlideInFromBottom |
FFPopupShowType_SlideInFromLeft |
FFPopupShowType_SlideInFromRight |
FFPopupShowType_BounceIn |
FFPopupShowType_BounceInFromTop |
FFPopupShowType_BounceInFromBottom |
FFPopupShowType_BounceInFromLeft |
FFPopupShowType_BounceInFromRight |
Animation transition for dismissing contentView. Controlled how the popup will be dismissed.
The default value is FFPopupDismissType_BounceOutToBottom
.
FFPopupDismissType |
---|
FFPopupDismissType_None |
FFPopupDismissType_FadeOut |
FFPopupDismissType_GrowOut |
FFPopupDismissType_ShrinkOut |
FFPopupDismissType_SlideOutToTop |
FFPopupDismissType_SlideOutToBottom |
FFPopupDismissType_SlideOutToLeft |
FFPopupDismissType_SlideOutToRight |
FFPopupDismissType_BounceOut |
FFPopupDismissType_BounceOutToTop |
FFPopupDismissType_BounceOutToBottom |
FFPopupDismissType_BounceOutToLeft |
FFPopupDismissType_BounceOutToRight |
Mask prevents background touches from passing to underlying views. Controlled whether to allow interaction with the underlying view.
The default value is FFPopupMaskType_Dimmed
.
FFPopupMaskType |
---|
FFPopupMaskType_None |
FFPopupMaskType_Clear |
FFPopupMaskType_Dimmed |
Property Name | Description | Default Value |
---|---|---|
dimmedMaskAlpha | Overrides alpha value for dimmed mask. | 0.5 |
showInDuration | Overrides animation duration for show in. | 0.15 |
dismissOutDuration | Overrides animation duration for dismiss out. | 0.15 |
shouldDismissOnBackgroundTouch | If YES , the popup will dismiss when background is touched. | YES |
shouldDismissOnContentTouch | If YES , the popup will dismiss when content view is touched. | NO |
/**
A block to be executed when showing animation started.
The default value is nil.
*/
@property (nonatomic, copy, nullable) void(^willStartShowingBlock)(void);
/**
A block to be executed when showing animation finished.
The default value is nil.
*/
@property (nonatomic, copy, nullable) void(^didFinishShowingBlock)(void);
/**
A block to be executed when dismissing animation started.
The default value is nil.
*/
@property (nonatomic, copy, nullable) void(^willStartDismissingBlock)(void);
/**
A block to be executed when dismissing animation finished.
The default value is nil.
*/
@property (nonatomic, copy, nullable) void(^didFinishDismissingBlock)(void);
Create a new popup with custom values.
/**
Convenience Initializers
Create a new popup with `contentView`.
*/
+ (FFPopup *)popupWithContentView:(UIView *)contentView;
/**
Convenience Initializers
Create a new popup with custom values.
@param contentView The view you want to appear in popup.
@param showType The default value is `FFPopupShowType_BounceInFromTop`.
@param dismissType The default value is `FFPopupDismissType_BounceOutToBottom`.
@param maskType The default value is `FFPopupMaskType_Dimmed`.
@param shouldDismissOnBackgroundTouch The default value is `YES`.
@param shouldDismissOnContentTouch The default value is `NO`.
*/
+ (FFPopup *)popupWithContentView:(UIView *)contentView
showType:(FFPopupShowType)showType
dismissType:(FFPopupDismissType)dismissType
maskType:(FFPopupMaskType)maskType
dismissOnBackgroundTouch:(BOOL)shouldDismissOnBackgroundTouch
dismissOnContentTouch:(BOOL)shouldDismissOnContentTouch;
/**
Show popup with center layout.
`FFPopupVerticalLayout_Center` & `FFPopupHorizontalLayout_Center`
Showing animation is determined by `showType`.
*/
- (void)show;
/**
Show popup with specified layout.
Showing animation is determined by `showType`.
*/
- (void)showWithLayout:(FFPopupLayout)layout;
/**
Show and then dismiss popup after `duration`.
If duration is `0.0` or `less`, it will be considered infinity.
*/
- (void)showWithDuration:(NSTimeInterval)duration;
/**
Show popup with specified `layout` and then dismissed after `duration`.
If duration is `0.0` or `less`, it will be considered infinity.
*/
- (void)showWithLayout:(FFPopupLayout)layout duration:(NSTimeInterval)duration;
/**
Show popup at point in view's coordinate system.
If view is nil, will use screen base coordinates.
*/
- (void)showAtCenterPoint:(CGPoint)point inView:(UIView *)view;
/**
Show popup at point in view's coordinate system and then dismissed after duration.
If view is nil, will use screen base coordinates.
If duration is `0.0` or `less`, it will be considered infinity.
*/
- (void)showAtCenterPoint:(CGPoint)point inView:(UIView *)view duration:(NSTimeInterval)duration;
/**
Dismiss popup.
Use `dismissType` if animated is `YES`.
*/
- (void)dismissAnimated:(BOOL)animated;
/**
Dismiss all the popups in the app.
*/
+ (void)dismissAllPopups;
/**
Dismiss the popup for contentView.
*/
+ (void)dismissPopupForView:(UIView *)view animated:(BOOL)animated;
/**
Dismiss super popup.
Iterate over superviews until you find a `FFPopup` and dismiss it.
*/
+ (void)dismissSuperPopupIn:(UIView *)view animated:(BOOL)animated;
This is the to-do list for the FFPopup
project. You can join us to become a contributor.
See the CONTRIBUTING file for contributing guidelines.
My app Time Card -Countdown (Never Forget Important Days) is using FFPopup
. You can download it and try it on your multiple devices to experience the effect.
This project exists thanks to all the people who contribute. Contribute
Thank you to all our backers! Your support is really important for the project and encourages us to continue. 🙏 Become a backer
Thank you to all our sponsors! Become a sponsor
FFPopup
is available under the MIT license. See the LICENSE file for more info.
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.