国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

表格選中效果展示

2019-11-14 18:44:11
字體:
來源:轉載
供稿:網友

 

源代碼地址:https://github.com/EizoiOS/ImagePickerClass

效果圖如下:

 

在單元格上增加一張圖片,此處的實例是把背景陰影也一起做為一張圖片,平時可以通過一個VIEW來設置它的透明度;還要單元格給它賦于相應的點擊事件;

 1:此為單元格視圖,用于處理選中的效果 

EiaoAsset.h文件

@interface EizoAsset : UIView{ UIImageView
* selectedView; // 創建一個ImageView -- 用來添加到選中的這個圖片上 BOOL selected; // 創建一個bool值 -- 用來標識有無選中}@PRoperty (strong,nonatomic)ALAsset * asset; // 通過ALAsset獲得相應的資源@property (assign , nonatomic) id parent;-(id)initWithAsset:(ALAsset*)asset;-(BOOL)selected;-(void)toggleSelection;@end
EiaoAsset.m文件:#import "EizoAsset.h"@interface EizoAsset(){    UIImageView * assetImageView; // 展示這個每一張圖片的ImageView}@end@implementation EizoAsset-(id)initWithAsset:(ALAsset *)asset {    if (self = [super initWithFrame:CGRectMake(0, 0, 0, 0)]) {        self.asset = asset;        assetImageView = [[UIImageView alloc]init];        assetImageView.contentMode = UIViewContentModeScaleaspectFill;        assetImageView.image = [UIImage imageWithCGImage:[self.asset thumbnail]];        // ALAsset的thumbnail是圖片的縮略圖        [self addSubview:assetImageView];        selectedView = [[UIImageView alloc]init];        selectedView.image = [UIImage imageNamed:@"Select.png"];        selectedView.hidden = YES;        [self addSubview:selectedView];    }    return self;}- (BOOL)selected {    return !selectedView.hidden;}-(void)setSelected:(BOOL)_selected {    [selectedView setHidden:!_selected];}// 在單元格 也就是上一個層面添加了一個手勢 點擊變化選中的狀態 也就是改變這個bool值- (void)toggleSelection {    selectedView.hidden = !selectedView.hidden;}-(void)setFrame:(CGRect)frame {    [super setFrame:frame];    assetImageView.frame = self.bounds;    selectedView.frame = self.bounds;}@end

注意:這邊已經把選中的效果去加上去,只是讓它先隱藏起來,還設置它點擊觸發的事件;ALAsset就是數據模型,用來存一些圖片的數據;

 

2:單元格文件:

eiaoAssetCell.h文件

#import <UIKit/UIKit.h>#define topMargin 5@interface EizoAssetCell : UITableViewCell// 單元格的創建方法-(instancetype)initWithAssets:(NSArray *)assets reuseIdentifier:(NSString *)identifier;// 傳入這個assets的方法-(void)setAssets:(NSArray *)assets;// @property (nonatomic,retain) NSArray * linesAssets; // 傳入的圖片的數組 -- 應該是所有的圖片@endeiaoAssetCell.m 文件:#import "EizoAssetCell.h"#import "EizoAsset.h"@implementation EizoAssetCell-(instancetype)initWithAssets:(NSArray *)assets reuseIdentifier:(NSString *)identifier { if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) { self.linesAssets = assets; } return self;}-(void)layoutSubviews { CGFloat h = self.bounds.size.height - topMargin; CGFloat margin = (self.bounds.size.width - 4 * h) / 5.0; CGRect frame = CGRectMake(margin,topMargin, h, h); for(EizoAsset * eizoAsset in self.linesAssets) { eizoAsset.frame = frame; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:eizoAsset action:@selector(toggleSelection)]; [eizoAsset addGestureRecognizer:tap]; [self addSubview:eizoAsset]; frame.origin.x = frame.origin.x + frame.size.width + margin; }}@end

注意:這邊最為重要的是在layoutSubviews里面的代碼,UITapGestureRecognizer把target指向上面創建的EizoAsset視圖,這樣便可以調用上面創建的選中及反選的事件;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泌阳县| 平远县| 南充市| 青田县| 百色市| 沾益县| 遂川县| 乌拉特前旗| 于田县| 昭平县| 株洲县| 榆社县| 潼南县| 周宁县| 松桃| 青冈县| 广汉市| 乐昌市| 沧源| 平江县| 沾化县| 德化县| 西青区| 玛纳斯县| 南通市| 淳化县| 霸州市| 贵溪市| 文山县| 卓尼县| 南投县| 文成县| 新巴尔虎左旗| 上虞市| 武夷山市| 延庆县| 曲阜市| 陈巴尔虎旗| 会泽县| 丰都县| 宣恩县|