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.
 

149 lines
4.7 KiB

//
// YJBannerViewCell.m
// YJBannerViewDemo
//
// Created by YJHou on 2015/5/24.
// Copyright © 2015年 Address:https://github.com/stackhou . All rights reserved.
//
#import "YJBannerViewCell.h"
#import "UIView+YJBannerViewExt.h"
@interface YJBannerViewCell ()
@property (nonatomic, strong) UIImageView *showImageView; /**< 显示图片 */
@property (nonatomic, strong) UILabel *titleLabel; /**< 标题头 */
@property (nonatomic, strong) UIView *titleLabelBgView; /**< 标题背景 */
@end
@implementation YJBannerViewCell
- (instancetype)initWithFrame:(CGRect)frame{
if (self = [super initWithFrame:frame]) {
[self _setUpMainView];
}
return self;
}
- (void)_setUpMainView{
[self.contentView addSubview:self.showImageView];
[self.contentView addSubview:self.titleLabelBgView];
[self.contentView addSubview:self.titleLabel];
}
#pragma mark - Setter && Getter
- (void)setTitleLabelBackgroundColor:(UIColor *)titleLabelBackgroundColor{
_titleLabelBackgroundColor = titleLabelBackgroundColor;
self.titleLabelBgView.backgroundColor = titleLabelBackgroundColor;
}
- (void)setTitleLabelTextColor:(UIColor *)titleLabelTextColor{
_titleLabelTextColor = titleLabelTextColor;
self.titleLabel.textColor = titleLabelTextColor;
}
- (void)setTitleLabelTextFont:(UIFont *)titleLabelTextFont{
_titleLabelTextFont = titleLabelTextFont;
self.titleLabel.font = titleLabelTextFont;
}
-(void)setTitleLabelTextAlignment:(NSTextAlignment)titleLabelTextAlignment{
_titleLabelTextAlignment = titleLabelTextAlignment;
self.titleLabel.textAlignment = titleLabelTextAlignment;
}
- (void)setShowImageViewContentMode:(UIViewContentMode)showImageViewContentMode{
_showImageViewContentMode = showImageViewContentMode;
self.showImageView.contentMode = showImageViewContentMode;
}
- (void)layoutSubviews{
[super layoutSubviews];
CGFloat titleBgViewlH = self.titleLabelHeight;
self.showImageView.frame = self.bounds;
CGFloat titlBgViewX = 0.0f;
CGFloat titleBgViewY = self.height_bannerView - titleBgViewlH;
CGFloat titleBgViewW = self.width_bannerView - 2 * titlBgViewX;
_titleLabelBgView.frame = CGRectMake(titlBgViewX, titleBgViewY, titleBgViewW, titleBgViewlH);
CGFloat titleLabelH = titleBgViewlH;
CGFloat titleLabelX = self.titleLabelEdgeMargin;
CGFloat titleLabelY = titleBgViewY;
CGFloat titleLabelW = self.width_bannerView - 2 * titleLabelX;
_titleLabel.frame = CGRectMake(titleLabelX, titleLabelY, titleLabelW, titleLabelH);
}
#pragma mark - 刷新数据
- (void)cellWithSelectorString:(NSString *)selectorString imagePath:(NSString *)imagePath placeholderImage:(UIImage *)placeholderImage title:(NSString *)title{
if (imagePath) {
self.showImageView.hidden = NO;
if ([imagePath isKindOfClass:[NSString class]]) {
if ([imagePath hasPrefix:@"http"]) {
// 检验方法是否可用
SEL selector = NSSelectorFromString(selectorString);
if ([self.showImageView respondsToSelector:selector]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self.showImageView performSelector:selector withObject:[NSURL URLWithString:imagePath] withObject:placeholderImage];
#pragma clang diagnostic pop
}
} else {
if (imagePath.length > 0) {
UIImage *image = [UIImage imageNamed:imagePath];
if (!image) {
image = [UIImage imageWithContentsOfFile:imagePath];
}
self.showImageView.image = image;
}
}
} else if ([imagePath isKindOfClass:[UIImage class]]) {
self.showImageView.image = (UIImage *)imagePath;
}else{
self.showImageView.image = placeholderImage;
}
}else{
self.showImageView.hidden = YES;
}
if (title.length > 0) {
self.titleLabel.text = title;
self.titleLabel.hidden = NO;
self.titleLabelBgView.hidden = NO;
}else{
self.titleLabel.hidden = YES;
self.titleLabelBgView.hidden = YES;
}
}
#pragma mark - Lazy
- (UIImageView *)showImageView{
if (!_showImageView) {
_showImageView = [[UIImageView alloc] init];
}
return _showImageView;
}
- (UILabel *)titleLabel{
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.hidden = YES;
_titleLabel.backgroundColor = [UIColor clearColor];
}
return _titleLabel;
}
- (UIView *)titleLabelBgView{
if (!_titleLabelBgView) {
_titleLabelBgView = [[UIView alloc] init];
_titleLabelBgView.hidden = YES;
}
return _titleLabelBgView;
}
@end