You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
3.5 KiB

//
// NSBundle+YYAdd.h
// YYKit <https://github.com/ibireme/YYKit>
//
// Created by ibireme on 14/10/20.
// Copyright (c) 2015 ibireme.
//
// This source code is licensed under the MIT-style license found in the
// LICENSE file in the root directory of this source tree.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/**
Provides extensions for `NSBundle` to get resource by @2x or @3x...
Example: ico.png, ico@2x.png, ico@3x.png. Call scaledResource:@"ico" ofType:@"png"
on iPhone6 will return "ico@2x.png"'s path.
*/
@interface NSBundle (YYAdd)
/**
An array of NSNumber objects, shows the best order for path scale search.
e.g. iPhone3GS:@[@1,@2,@3] iPhone5:@[@2,@3,@1] iPhone6 Plus:@[@3,@2,@1]
*/
+ (NSArray<NSNumber *> *)preferredScales;
/**
Returns the full pathname for the resource file identified by the specified
name and extension and residing in a given bundle directory. It first search
the file with current screen's scale (such as @2x), then search from higher
scale to lower scale.
@param name The name of a resource file contained in the directory
specified by bundlePath.
@param ext If extension is an empty string or nil, the extension is
assumed not to exist and the file is the first file encountered that exactly matches name.
@param bundlePath The path of a top-level bundle directory. This must be a
valid path. For example, to specify the bundle directory for a Mac app, you
might specify the path /Applications/MyApp.app.
@return The full pathname for the resource file or nil if the file could not be
located. This method also returns nil if the bundle specified by the bundlePath
parameter does not exist or is not a readable directory.
*/
+ (nullable NSString *)pathForScaledResource:(NSString *)name
ofType:(nullable NSString *)ext
inDirectory:(NSString *)bundlePath;
/**
Returns the full pathname for the resource identified by the specified name and
file extension. It first search the file with current screen's scale (such as @2x),
then search from higher scale to lower scale.
@param name The name of the resource file. If name is an empty string or
nil, returns the first file encountered of the supplied type.
@param ext If extension is an empty string or nil, the extension is
assumed not to exist and the file is the first file encountered that exactly matches name.
@return The full pathname for the resource file or nil if the file could not be located.
*/
- (nullable NSString *)pathForScaledResource:(NSString *)name ofType:(nullable NSString *)ext;
/**
Returns the full pathname for the resource identified by the specified name and
file extension and located in the specified bundle subdirectory. It first search
the file with current screen's scale (such as @2x), then search from higher
scale to lower scale.
@param name The name of the resource file.
@param ext If extension is an empty string or nil, all the files in
subpath and its subdirectories are returned. If an extension is provided the
subdirectories are not searched.
@param subpath The name of the bundle subdirectory. Can be nil.
@return The full pathname for the resource file or nil if the file could not be located.
*/
- (nullable NSString *)pathForScaledResource:(NSString *)name
ofType:(nullable NSString *)ext
inDirectory:(nullable NSString *)subpath;
@end
NS_ASSUME_NONNULL_END