QMUIHelper
@interface QMUIHelper : NSObject
+ (instancetype)sharedInstance;
@end
Undocumented
-
Undocumented
Declaration
Objective-C
+ (instancetype)sharedInstance;
Swift
class func sharedInstance() -> Self
-
获取 QMUIKit.framework Images.xcassets 内的图片资源
Declaration
Objective-C
+ (nullable UIImage *)imageWithName:(nonnull NSString *)name;
Swift
class func image(withName name: String) -> UIImage?
Parameters
name
图片名
-
Undocumented
Declaration
Objective-C
+ (NSInteger)numbericOSVersion;
Swift
class func numbericOSVersion() -> Int
-
Undocumented
Declaration
Objective-C
+ (NSComparisonResult)compareSystemVersion:(nonnull NSString *)currentVersion toVersion:(nonnull NSString *)targetVersion;
Swift
class func compareSystemVersion(_ currentVersion: String, toVersion targetVersion: String) -> ComparisonResult
-
Undocumented
Declaration
Objective-C
+ (BOOL)isCurrentSystemAtLeastVersion:(nonnull NSString *)targetVersion;
Swift
class func isCurrentSystem(atLeastVersion targetVersion: String) -> Bool
-
Undocumented
Declaration
Objective-C
+ (BOOL)isCurrentSystemLowerThanVersion:(nonnull NSString *)targetVersion;
Swift
class func isCurrentSystemLowerThanVersion(_ targetVersion: String) -> Bool
-
返回当前 contentSize 的 level,这个值可以在设置里面的“字体大小”查看,辅助功能里面有个“更大字体”可以设置更大的字体,不过这里我们这个接口将更大字体都做了统一,都返回“字体大小”里面最大值。 Returns the level of contentSize The value can be set in Settings - Display & Brightness - Text Size as well as in General - Accessibility - Larger Text This method returns the value set by user or the maximum value in Text Size, whichever is smaller
Declaration
Objective-C
+ (nonnull NSNumber *)preferredContentSizeLevel;
Swift
class func preferredContentSizeLevel() -> NSNumber
-
设置当前 cell 的高度,heights 是有七个数值的数组,对于不支持的iOS版本,则选择中间的值返回。 Sets height of the cell; Heights consist of 7 numberic values; Returns the middle value on legacy iOS versions.
Declaration
Objective-C
+ (CGFloat)heightForDynamicTypeCell:(nonnull NSArray *)heights;
Swift
class func height(forDynamicTypeCell heights: [Any]) -> CGFloat
-
判断当前 App 里的键盘是否升起,默认为 NO Returns the visibility of the keybord. Default value is NO.
Declaration
Objective-C
+ (BOOL)isKeyboardVisible;
Swift
class func isKeyboardVisible() -> Bool
-
记录上一次键盘显示时的高度(基于整个 App 所在的 window 的坐标系),注意使用前用
isKeyboardVisible
判断键盘是否显示,因为即便是键盘被隐藏的情况下,调用lastKeyboardHeightInApplicationWindowWhenVisible
也会得到高度值。Declaration
Objective-C
+ (CGFloat)lastKeyboardHeightInApplicationWindowWhenVisible;
Swift
class func lastKeyboardHeightInApplicationWindowWhenVisible() -> CGFloat
-
获取当前键盘frame相关
Warning
注意iOS8以下的系统在横屏时得到的rect,宽度和高度相反了,所以不建议直接通过这个方法获取高度,而是使用keyboardHeightWithNotification:inView:
,因为在后者的实现里会将键盘的rect转换坐标系,转换过程就会处理横竖屏旋转问题。Declaration
Objective-C
+ (CGRect)keyboardRectWithNotification:(nullable NSNotification *)notification;
Swift
class func keyboardRect(with notification: Notification?) -> CGRect
-
获取当前键盘的高度,注意高度可能为0(例如第三方键盘会发出两次notification,其中第一次的高度就为0)
Declaration
Objective-C
+ (CGFloat)keyboardHeightWithNotification: (nullable NSNotification *)notification;
Swift
class func keyboardHeight(with notification: Notification?) -> CGFloat
-
获取当前键盘在屏幕上的可见高度,注意外接键盘(iPad那种)时,[QMUIHelper keyboardRectWithNotification]得到的键盘rect里有一部分是超出屏幕,不可见的,如果直接拿rect的高度来计算就会与意图相悖。
Warning
如果view.window为空(当前View尚不可见),则会使用App默认的UIWindow来做坐标转换,可能会导致一些计算错误Declaration
Objective-C
+ (CGFloat)keyboardHeightWithNotification: (nullable NSNotification *)notification inView:(nullable UIView *)view;
Swift
class func keyboardHeight(with notification: Notification?, in view: UIView?) -> CGFloat
Parameters
notification
接收到的键盘事件的UINotification对象
view
要得到的键盘高度是相对于哪个View的键盘高度,若为nil,则等同于调用[QMUIHelper keyboardHeightWithNotification:]
Return Value
键盘在view里的可视高度
-
获取键盘显示/隐藏的动画时长,注意返回值可能为0
Declaration
Objective-C
+ (NSTimeInterval)keyboardAnimationDurationWithNotification: (nullable NSNotification *)notification;
Swift
class func keyboardAnimationDuration(with notification: Notification?) -> TimeInterval
-
获取键盘显示/隐藏的动画时间函数
Declaration
Objective-C
+ (UIViewAnimationCurve)keyboardAnimationCurveWithNotification: (nullable NSNotification *)notification;
Swift
class func keyboardAnimationCurve(with notification: Notification?) -> UIView.AnimationCurve
-
获取键盘显示/隐藏的动画时间函数
Declaration
Objective-C
+ (UIViewAnimationOptions)keyboardAnimationOptionsWithNotification: (nullable NSNotification *)notification;
Swift
class func keyboardAnimationOptions(with notification: Notification?) -> UIView.AnimationOptions
-
听筒和扬声器的切换
Declaration
Objective-C
+ (void)redirectAudioRouteWithSpeaker:(BOOL)speaker temporary:(BOOL)temporary;
Swift
class func redirectAudioRoute(withSpeaker speaker: Bool, temporary: Bool)
Parameters
speaker
是否转为扬声器,NO则听筒
temporary
决定使用kAudioSessionProperty_OverrideAudioRoute还是kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,两者的区别请查看本组的博客文章:http://km.oa.com/group/gyui/articles/show/235957
-
设置category
Declaration
Objective-C
+ (void)setAudioSessionCategory:(nullable NSString *)category;
Swift
class func setAudioSessionCategory(_ category: String?)
Parameters
category
使用iOS7的category,iOS6的会自动适配
-
获取一像素的大小
Declaration
Objective-C
+ (CGFloat)pixelOne;
Swift
class func pixelOne() -> CGFloat
-
判断size是否超出范围
Declaration
Objective-C
+ (void)inspectContextSize:(CGSize)size;
Swift
class func inspectContextSize(_ size: CGSize)
-
context是否合法
Declaration
Objective-C
+ (void)inspectContextIfInvalidatedInDebugMode:(nonnull CGContextRef)context;
Swift
class func inspectContextIfInvalidated(inDebugMode context: CGContext)
-
Undocumented
Declaration
Objective-C
+ (BOOL)inspectContextIfInvalidatedInReleaseMode:(CGContextRef)context;
Swift
class func inspectContextIfInvalidated(inReleaseMode context: CGContext) -> Bool
-
如 iPhone12,5、iPad6,8
Declaration
Objective-C
+ (nonnull NSString *)deviceModel;
Swift
class func deviceModel() -> String
-
如 iPhone 11 Pro Max、iPad Pro (12.9 inch)
Declaration
Objective-C
+ (nonnull NSString *)deviceName;
Swift
class func deviceName() -> String
-
Undocumented
Declaration
Objective-C
+ (BOOL)isIPad;
Swift
class func isIPad() -> Bool
-
Undocumented
Declaration
Objective-C
+ (BOOL)isIPod;
Swift
class func isIPod() -> Bool
-
Undocumented
Declaration
Objective-C
+ (BOOL)isIPhone;
Swift
class func isIPhone() -> Bool
-
Undocumented
Declaration
Objective-C
+ (BOOL)isSimulator;
Swift
class func isSimulator() -> Bool
-
带物理凹槽的刘海屏或者使用 Home Indicator 类型的设备
Declaration
Objective-C
+ (BOOL)isNotchedScreen;
Swift
class func isNotchedScreen() -> Bool
-
将屏幕分为普通和紧凑两种,这个方法用于判断普通屏幕
Declaration
Objective-C
+ (BOOL)isRegularScreen;
Swift
class func isRegularScreen() -> Bool
-
iPhone XS Max / 11 Pro Max
Declaration
Objective-C
+ (BOOL)is65InchScreen;
Swift
class func is65InchScreen() -> Bool
-
iPhone XR / 11
Declaration
Objective-C
+ (BOOL)is61InchScreen;
Swift
class func is61InchScreen() -> Bool
-
iPhone X / XS / 11Pro
Declaration
Objective-C
+ (BOOL)is58InchScreen;
Swift
class func is58InchScreen() -> Bool
-
iPhone 8 Plus
Declaration
Objective-C
+ (BOOL)is55InchScreen;
Swift
class func is55InchScreen() -> Bool
-
iPhone 8
Declaration
Objective-C
+ (BOOL)is47InchScreen;
Swift
class func is47InchScreen() -> Bool
-
iPhone 5
Declaration
Objective-C
+ (BOOL)is40InchScreen;
Swift
class func is40InchScreen() -> Bool
-
iPhone 4
Declaration
Objective-C
+ (BOOL)is35InchScreen;
Swift
class func is35InchScreen() -> Bool
-
Undocumented
Declaration
Objective-C
+ (CGSize)screenSizeFor65Inch;
Swift
class func screenSizeFor65Inch() -> CGSize
-
Undocumented
Declaration
Objective-C
+ (CGSize)screenSizeFor61Inch;
Swift
class func screenSizeFor61Inch() -> CGSize
-
Undocumented
Declaration
Objective-C
+ (CGSize)screenSizeFor58Inch;
Swift
class func screenSizeFor58Inch() -> CGSize
-
Undocumented
Declaration
Objective-C
+ (CGSize)screenSizeFor55Inch;
Swift
class func screenSizeFor55Inch() -> CGSize
-
Undocumented
Declaration
Objective-C
+ (CGSize)screenSizeFor47Inch;
Swift
class func screenSizeFor47Inch() -> CGSize
-
Undocumented
Declaration
Objective-C
+ (CGSize)screenSizeFor40Inch;
Swift
class func screenSizeFor40Inch() -> CGSize
-
Undocumented
Declaration
Objective-C
+ (CGSize)screenSizeFor35Inch;
Swift
class func screenSizeFor35Inch() -> CGSize
-
Undocumented
Declaration
Objective-C
+ (CGFloat)preferredLayoutAsSimilarScreenWidthForIPad;
Swift
class func preferredLayoutAsSimilarScreenWidthForIPad() -> CGFloat
-
Undocumented
Declaration
Objective-C
+ (UIEdgeInsets)safeAreaInsetsForDeviceWithNotch;
Swift
class func safeAreaInsetsForDeviceWithNotch() -> UIEdgeInsets
-
判断当前设备是否高性能设备,只会判断一次,以后都直接读取结果,所以没有性能问题
Declaration
Objective-C
+ (BOOL)isHighPerformanceDevice;
Swift
class func isHighPerformanceDevice() -> Bool
-
系统设置里是否开启了“放大显示-试图-放大”,支持放大模式的 iPhone 设备可在官方文档中查询 https://support.apple.com/zh-cn/guide/iphone/iphd6804774e/ios
Declaration
Objective-C
+ (BOOL)isZoomedMode;
Swift
class func isZoomedMode() -> Bool
-
在 iPad 分屏模式下可获得实际运行区域的窗口大小,如需适配 iPad 分屏,建议用这个方法来代替 [UIScreen mainScreen].bounds.size
Declaration
Objective-C
+ (CGSize)applicationSize;
Swift
class func applicationSize() -> CGSize
Return Value
应用运行的窗口大小
-
把App的主要window置灰,用于浮层弹出时,请注意要在适当时机调用
resetDimmedApplicationWindow
恢复到正常状态Declaration
Objective-C
+ (void)dimmedApplicationWindow;
Swift
class func dimmedApplicationWindow()
-
恢复对App的主要window的置灰操作,与
dimmedApplicationWindow
成对调用Declaration
Objective-C
+ (void)resetDimmedApplicationWindow;
Swift
class func resetDimmedApplicationWindow()
-
黑色的 StatusBarStyle,用于亮色背景
Note
在 iOS 13 以前 UIStatusBarStyleDefault 状态栏内容的颜色固定是黑色的,而在 iOS 13 UIStatusBarStyleDefault 会根据 user interface style 来决定状态栏的颜色,如果你需要一直黑色可以用 QMUIStatusBarStyleDarkContent 来代替以前 UIStatusBarStyleDefault 的写法Declaration
Objective-C
+ (UIStatusBarStyle)statusBarStyleDarkContent;
Swift
class func statusBarStyleDarkContent() -> UIStatusBarStyle
Return Value
在 iOS 13 以上返回 UIStatusBarStyleDarkContent,在 iOS 12 及以下返回 UIStatusBarStyleDefault
-
在 animationBlock 里的操作完成之后会调用 completionBlock,常用于一些不提供 completionBlock 的系统动画操作,例如 [UINavigationController pushViewController:animated:YES] 的场景,注意 UIScrollView 系列的滚动无法使用这个方法。
Declaration
Objective-C
+ (void)executeAnimationBlock:(nonnull void (^)(void))animationBlock completionBlock:(nullable void (^)(void))completionBlock;
Swift
class func executeAnimationBlock(_ animationBlock: () -> Void, completionBlock: (() -> Void)? = nil)
Parameters
animationBlock
要进行的带动画的操作
completionBlock
操作完成后的回调