一. 概述數組
1 #import "ViewController.h" 2 3 //用於查找字典防止拼寫錯誤 4 #define HGImgKey @"name" 5 #define HGImgDes @"desc" 6 7 @interface ViewController () 8 /** 圖片序號 */ 9 @property (weak, nonatomic) IBOutlet UILabel *iconNum; 10 /** 圖片描述 */ 11 @property (weak, nonatomic) IBOutlet UILabel *iconDesc; 12 /** 圖片數據 */ 13 @property (weak, nonatomic) IBOutlet UIImageView *iconView; 14 /** 上一張圖片按鈕 用於設置enable狀態 */ 15 @property (weak, nonatomic) IBOutlet UIButton *prevBtn; 16 /** 下一張圖片按鈕 用於設置enable狀態 */ 17 @property (weak, nonatomic) IBOutlet UIButton *nextBtn; 18 /** 設置按鈕 彈出的設置框 */ 19 @property (weak, nonatomic) IBOutlet UIView *setView; 20 21 /** 記錄當前圖片索引即序號 */ 22 @property (nonatomic,assign) int iconIndex; 23 24 /** 圖片數據結合 讓控制器擁有數據並使用懶加載方式加載數據 */ 25 @property (nonatomic,strong)NSArray* imageData; 26 /** 設置按鈕監聽事件 */ 27 - (IBAction)setting:(UIButton *)sender; 28 /** 縮放監聽事件 */ 29 - (IBAction)changeSize:(UISlider *)sender; 30 /** 模式選擇開關監聽事件 */ 31 - (IBAction)changeMode:(UISwitch *)sender; 32 33 /** previous 按鈕監聽事件 */ 34 - (IBAction)previous:(UIButton *)sender; 35 /** next 按鈕監聽事件 */ 36 - (IBAction)next:(UIButton *)sender; 37 38 @end
2)懶加載的方式建立並初始化數據瀏覽器
1 /** 2 * 懶加載的實現方式,重寫get方法,用到時才建立並初始化數據 3 * 4 * @return _imageData 完成初始化的數據 5 */ 6 - (NSArray *)imageData1 7 { 8 // 判空只需在第一次使用時加載 9 if(_imageData == nil) 10 { 11 //建立字典 12 // 先來一個空的 13 NSMutableDictionary *img1 = [NSMutableDictionary dictionary]; 14 // 以後使用添加的方法添加key和val 15 img1[HGImgKey] = @"iq"; 16 img1[HGImgDes] = @"你是在挑戰小偷的智商嗎"; 17 18 // 先來一個空的 19 NSMutableDictionary *img2 = [NSMutableDictionary dictionary]; 20 // 以後使用添加的方法添加key和val 21 img2[HGImgKey] = @"caifang"; 22 img2[HGImgDes] = @"哪家電視臺這麼坑爹"; 23 24 // 先來一個空的 25 NSMutableDictionary *img3 = [NSMutableDictionary dictionary]; 26 // 以後使用添加的方法添加key和val 27 img3[HGImgKey] = @"niupai"; 28 img3[HGImgDes] = @"吃個牛排堪比殺牛"; 29 30 // 先來一個空的 31 NSMutableDictionary *img4 = [NSMutableDictionary dictionary]; 32 // 以後使用添加的方法添加key和val 33 img4[HGImgKey] = @"biaoqingdi"; 34 img4[HGImgDes] = @"在他面前,什麼表情都弱爆了"; 35 36 // 先來一個空的 37 NSMutableDictionary *img5 = [NSMutableDictionary dictionary]; 38 // 以後使用添加的方法添加key和val 39 img5[HGImgKey] = @"can"; 40 img5[HGImgDes] = @"一個字慘!"; 41 42 // 先來一個空的 43 NSMutableDictionary *img6 = [NSMutableDictionary dictionary]; 44 // 以後使用添加的方法添加key和val 45 img6[HGImgKey] = @"sb"; 46 img6[HGImgDes] = @"非要跟本身過不去"; 47 48 /* 將字典加入數組 */ 49 // 快速建立數組的方法 50 _imageData = @[img1,img2,img3,img4,img5,img6]; 51 52 } 53 return _imageData; 54 }
2.前、後按鈕的監聽事件:因爲兩個按鈕均須要改變顯示數據,故將公共的代碼部分提出到changeData方法中,只在各自的處理中操做index便可ide
1 - (IBAction)previous:(UIButton *)sender 2 { 3 // 序號減一 4 _iconIndex--; 5 // 改變顯示的數據並設置按鈕狀態 6 [self changeData]; 7 } 8 9 - (IBAction)next:(UIButton *)sender 10 { 11 // 序號加1 12 _iconIndex++; 13 [self changeData]; 14 }
changeData方法實現:動畫
1 - (void)changeData 2 { 3 // 從字典中取出當前索引對應的數據 4 NSDictionary *dict = self.imageData[self.iconIndex]; 5 6 /* 設置序號 */ 7 NSString *num = [NSString stringWithFormat:@"%d/%d",_iconIndex + 1,(int)self.imageData.count]; 8 _iconNum.text = num; 9 10 /* 設置數據 */ 11 _iconView.image = [UIImage imageNamed:dict[HGImgKey]]; 12 13 /* 設置描述 */ 14 _iconDesc.text = dict[HGImgDes]; 15 16 // 設置按鈕狀態 17 _prevBtn.enabled = _iconIndex > 0; 18 // 不可寫死 19 //_nextBtn.enabled = _iconIndex < 5; 20 _nextBtn.enabled = _iconIndex < self.imageData.count -1; 21 }
3.設置按鈕的監聽事件atom
1 - (IBAction)setting:(UIButton *)sender { 2 3 NSLog(@"seting"); 4 5 // 添加動畫 6 [UIView animateWithDuration:1.0 animations:^{ 7 CGRect fram = _setView.frame; 8 if (fram.origin.y == self.view.frame.size.height) 9 { 10 fram.origin.y -= _setView.bounds.size.height; 11 } 12 else 13 { 14 fram.origin.y += _setView.bounds.size.height; 15 } 16 _setView.frame = fram; 17 }]; 18 }
4.圖片的縮放:縮放使用的是UISlider控件值設爲0-1默認爲最大,只能比初始狀態小。spa
1 - (IBAction)changeSize:(UISlider *)sender { 2 3 NSLog(@"changeSize"); 4 // 縮放圖片 5 // 獲取當前的value 6 CGFloat value = sender.value; 7 //改變圖片的transform屬性 8 _iconView.transform = CGAffineTransformMakeScale(value, value); 9 }
1 @property(nonatomic) NSInteger numberOfLines;
1. UIlabel控件顯示文字默認是左對齊,要想設置的居中,在storybord中的設置見上圖中alignment選項,對應的代碼爲:code
@property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentLeft
可設置爲以下三個值:orm
NSTextAlignmentLeft = 0, // 左對齊 NSTextAlignmentCenter = 1, // 居中 NSTextAlignmentRight = 2, // 右對齊