ISO開發基礎—簡單的圖片瀏覽app
作者宣告
因個人能力問題,文中不免會有錯誤之處,歡迎各位讀者交流,批評,指正!
摘要
設計一個簡單的圖片瀏覽應用,可實現圖片瀏覽、設定夜間模式、圖片縮放、更改圖片序號和描述、隱藏設定檢視等。
用到的控制元件
button imageView lable slider switch
例項
viewController . h程式碼
//
// ViewController.h
// 圖片瀏覽器
//
// Created by dqw on 15/5/6.
// Copyright (c) 2015年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UILabel *imageNo;
@property (weak, nonatomic) IBOutlet UILabel *imageDesc;
@property (weak, nonatomic) IBOutlet UIView *settingView;
- (IBAction)changImages:(UISlider *)sender;
- (IBAction)setMode:(UISwitch *)sender;
- (IBAction)scaleImage:(UISlider *)sender;
- (IBAction)displaySettingView:(id)sender;
@end
viewController . m程式碼
//
// ViewController.m
// 圖片瀏覽器
//
// Created by dqw on 15/5/6.
// Copyright (c) 2015年 itcast. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
{
// 在此定義成員變數是為了在下面的多個方法能夠使用它。
NSArray *_imageDescs;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 更改圖片描述,圖片和圖片描述子類都放在一個app包裡面,mianbundle 就是得到這個包。
NSBundle *bundle = [NSBundle mainBundle];
// 得到包裡面該檔案的路徑。
NSString *path = [bundle pathForResource:@"imageDescs" ofType:@"plist"];
// 將路徑裡面的檔案提取至陣列裡面。
_imageDescs = [NSArray arrayWithContentsOfFile:path];
_imageDesc.text = _imageDescs[0];
}
// 定義動畫方法。
- (void)butClickWithBlock:(void(^)())block
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
block();
[UIView commitAnimations];
}
// 監聽圖片瀏覽滑鈕,改變圖片,圖片序號,圖片描述。
- (IBAction)changImages:(UISlider *)sender {
[self butClickWithBlock:^{
// 更改圖片序號,注意滑鈕的值要改為整數,此處的%.f表達表示四捨五入。
_imageNo.text = [NSString stringWithFormat:@"%.f/16", sender.value];
// 得到圖片的序號,int強制型別轉化僅僅提取整數部分,沒有四捨五入,所以為了和上面對應,要+0.5.
int no = (int)(sender.value + 0.5);
// 更改圖片。
NSString *imageName = [NSString stringWithFormat:@"%d.png", no - 1];
UIImage *image = [UIImage imageNamed:imageName];
_imageView.image = image;
// 以此更改圖片描述。
_imageDesc.text = _imageDescs[no-1];
}];
}
// 監聽夜間模式按鈕。
- (IBAction)setMode:(UISwitch *)sender {
[self butClickWithBlock:^{
if (sender.on){
// 用這種方法編譯失敗,原因不清楚,好像_view這個表達不合理。可能是因為_view是當前viewController類的父類UIviewController的成員變數,其定義為@Package。
// _view.backgroundColor = [UIColor darkGrayColor];
self.view.backgroundColor = [UIColor darkGrayColor];
// 下面的表達也是可以的,背景色是設定為灰色,而不是黑色。
//[self.view setBackgroundColor:[UIColor darkGrayColor]];
}
else
{
[self.view setBackgroundColor:[UIColor whiteColor]];
}
}];
}
// 監聽縮放圖片滑鈕。
- (IBAction)scaleImage:(UISlider *)sender {
[self butClickWithBlock:^{
float scaleXY = sender.value;
// 該方法錯誤,它是相對縮放,在當前的基礎上縮放,變換不均勻,當圖片縮小到零的時候,圖片會消失,無法恢復。
//_imageView.transform = CGAffineTransformScale(_imageView.transform, scaleXY, scaleXY);
//該方法是絕對縮放,推薦使用。
_imageView.transform = CGAffineTransformMakeScale(scaleXY, scaleXY);
// 與上面的方法相似,得到其最初狀態,然後進行型對縮放。
//_imageView.transform = CGAffineTransformScale(CGAffineTransformIdentity, scaleXY, scaleXY);
}];
}
// 監聽隱藏設定檢視按鈕。
- (IBAction)displaySettingView:(id)sender {
[self butClickWithBlock:^{
CGRect frame = _settingView.frame;
if (_settingView.frame.origin.y < self.view.frame.size.height) {
// 注意加減的是settingview的高度。
frame.origin.y += _settingView.frame.size.height;
}
else{
frame.origin.y -= _settingView.frame.size.height;
}
_settingView.frame = frame;
}];
}
@end
重點 難點 注意點
- 得到plist檔案中圖片描述的方法: support檔案放在一個.app檔案裡面,稱為一個包(bundle),利用類方法 NSBundle *bundle = [NSBundle mainBundle]得到該包,然後呼叫物件方法NSString *path = [bundle pathForResource:@”imageDescs” ofType:@”plist”];得到其路徑,最後通過路徑將其中的內容提取到陣列中。
- 直接使用_view得到當前viewController的_view變數好像是不合理的表達。個人猜測可能是因為:_view是當前viewController類的父類UIviewController的成員變數,其定義為@Package。
- 將plist裡面的內容提取到陣列中的操作是放在- (void)viewDidLoad方法裡面。
- %.f和(int)的區別,前者四捨五入,後者僅僅擷取整數部分,所以為了保證二者一致,則int方法裡面將原值+0.5.
- 在通過比例因子對圖片進行縮放的時候,要注意使用絕對縮放。
- 如果要改變某個控制元件,則將其定義為成員變數,如果要監聽其動作,則對其定義觸發事件。
待完善的內容
- @package 修飾的成員變數,其作用域,許可權怎樣。
- @private 所謂的私有,究竟是怎麼一回事,結合方法的私有。
- 深入研究plist使用方法,看看還可以實現其它功能。
相關文章
- 23.Quick QML-簡單且好看的圖片瀏覽器-支援多個圖片瀏覽、縮放、旋轉、滑輪切換圖片UI瀏覽器
- GraphicConverter for Mac(圖片瀏覽器)Mac瀏覽器
- ApolloOne for mac(圖片瀏覽工具)Mac
- 基於CefSharp開發(五)瀏覽器選單樣式瀏覽器
- 基於CefSharp開發(七)瀏覽器收藏夾選單瀏覽器
- iSee Pro for Mac圖片瀏覽器Mac瀏覽器
- 基於CefSharp開發瀏覽器(八)瀏覽器收藏夾欄瀏覽器
- 高效圖片瀏覽器:Pixea Plus for Mac瀏覽器Mac
- FotoTime Mac(圖片瀏覽管理器)Mac
- Mac圖片瀏覽軟體——XnViewMP for MacMacView
- 攻防世界-簡單的圖片
- 實現簡單的輪播圖(單張圖片、多張圖片)
- Linux基礎命令---lynx瀏覽器Linux瀏覽器
- Mac圖片編輯瀏覽工具:GraphicConverter 11Mac
- 瀏覽器 Web 訪問剪下板圖片瀏覽器Web
- ApolloOne for Mac號稱最快的圖片瀏覽軟體Mac
- OS開發基礎——多執行緒的簡單應用執行緒
- @Summer 解決下Safari瀏覽器任意圖片預覽一片模糊的bug瀏覽器
- Linux基礎命令---elinks文字瀏覽器Linux瀏覽器
- 直播平臺原始碼,圖片放大瀏覽功能原始碼
- Mac圖片編輯和瀏覽工具——GraphicConverter for MacMac
- 完全模仿掘金Android App大圖瀏覽拖拽效果!AndroidAPP
- 直播app開發,螢幕效果與圖片的處理APP
- app,小程式開發基礎知識APP
- 直播app開發搭建,Android studio 圖片壓縮APPAndroid
- 利用 Powershell 編寫簡單的瀏覽器指令碼瀏覽器指令碼
- JavaScript中的瀏覽器檢測和DOM基礎JavaScript瀏覽器
- 超好用的圖片瀏覽軟體:Lyn Mac中文版Mac
- Linux基礎之瀏覽和建立檔案Linux
- 瀏覽器執行javaScript程式碼基礎瀏覽器JavaScript
- webkit 瀏覽器內幕之渲染基礎WebKit瀏覽器
- 【PB案例學習筆記】-05 圖片瀏覽器筆記瀏覽器
- Mac圖片編輯瀏覽軟體:GraphicConverter 11 for MacMac
- iOS圖片瀏覽器(功能強大/效能優越)iOS瀏覽器
- 瀏覽器掃碼開啟Android/iOS App瀏覽器AndroidiOSAPP
- Flutter Scheme 使用(瀏覽器開啟App,App內開啟另一個App)FlutterScheme瀏覽器APP
- 手機瀏覽器不能顯示輪播圖或是其他圖片瀏覽器
- Fresco圖片載入的簡單應用
- 影視APP開發基礎功能詳解APP