-
Notifications
You must be signed in to change notification settings - Fork 305
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
特殊情况:结合SDWebImage使用 #8
Comments
首先得到当前主题应该设置的占位图片名:
// ThemeManager.currentThemeIndex 可以获得当前主题的索引
NSString *imageName = ThemeManager.currentThemeIndex == 0 ? @"first_image" : @"second_image";
// stringForKeyPath可以直接获得keyPath中的值
NSString *imageName = [ThemeManager stringForKeyPath:@"YourImageNameKeyPath"]; 然后设置图片: [self.avatar sd_setBackgroundImageWithURL:[NSURL URLWithString:self.avatar]
forState:UIControlStateNormal
placeholderImage:[UIImage imageWithName:imageName]];
|
其实我是想让placeholderImage也用上 - (void)theme_setBackgroundImageWithURL:(NSURL *)url
forState:(UIControlState)state
placeholderImageName:(NSString *)imageKeyPath {
[self theme_setBackgroundImage:[ThemeImagePicker pickerWithKeyPath:imageKeyPath] forState:state];
NSString *imageName = [ThemeManager stringForKeyPath:imageKeyPath];
@weakify(self);
[self sd_setBackgroundImageWithURL:[self thumbnailImageURL:url]
forState:UIControlStateNormal
placeholderImage:[UIImage imageWithName:imageName]
completed:
^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
@strongify(self);
if (!error) {
NSMutableDictionary *dict = [self.themePickers mutableCopy];
[dict setValue:nil forKey:@"setBackgroundImage:forState:"];
self.themePickers = [dict copy];
}
}];
} |
这个方法看上去是可行的,可以改进的是: NSString *imageName = [ThemeManager stringForKeyPath:imageKeyPath];
[UIImage imageWithName:imageName];
// 可以替换为:
[ThemeManager imageForKeyPath:imageKeyPath]; NSMutableDictionary *dict = [self.themePickers mutableCopy];
[dict setValue:nil forKey:@"setBackgroundImage:forState:"];
self.themePickers = [dict copy];
// 可以替换为:
[self theme_setBackgroundImage:nil forState:UIControlStateNormal]; // 现在类型不支持,我改一下 然后你可以这样写: [self theme_setBackgroundImage:[ThemeImagePicker pickerWithKeyPath:imageKeyPath] forState:state];
@weakify(self);
[self sd_setBackgroundImageWithURL:[self thumbnailImageURL:url]
forState:state
placeholderImage:[ThemeManager imageForKeyPath:imageKeyPath]
completed:
^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
@strongify(self);
if (!error) {
[self theme_setBackgroundImage:nil forState:UIControlStateNormal];
}
}]; 现在已经支持这样写(需要更新一下SwiftTheme,版本0.2.1): [self theme_setBackgroundImage:nil forState:UIControlStateNormal]; |
赞 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
我在实际使用中遇到这种情况
要求placeholderImage根据主题不同使用不同图片,不知道有什么合适的方法
The text was updated successfully, but these errors were encountered: