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使用方法,看看還可以實現其它功能。
相關文章
- IOS開發基礎—簡單的qq表情排列appiOSAPP
- 在 .NET 中開發基於 Chrome 核心的瀏覽器-建立一個簡單瀏覽器Chrome瀏覽器
- 23.Quick QML-簡單且好看的圖片瀏覽器-支援多個圖片瀏覽、縮放、旋轉、滑輪切換圖片UI瀏覽器
- Android 用WebView開發簡單的瀏覽器AndroidWebView瀏覽器
- iOS開發系列--無限迴圈的圖片瀏覽器iOS瀏覽器
- iOS圖片瀏覽器 - XLPhotoBrowser(類似微信多圖片瀏覽效果)iOS瀏覽器
- JXImageBrowser (圖片瀏覽器)瀏覽器
- 基於vue的簡單流程圖開發Vue流程圖
- ios圖片瀏覽器封裝,一句程式碼呼叫,簡單易用iOS瀏覽器封裝
- ApolloOne for mac(圖片瀏覽工具)Mac
- Swift 3 圖片瀏覽工具Swift
- ABase ImageBrowserActivity之圖片瀏覽
- 如何用Python開發一個簡單的Webkit瀏覽器PythonWebKit瀏覽器
- Cardboard開發教程:使用Unity製作Cardboard全景圖片瀏覽器Unity瀏覽器
- 一起擼個朋友圈吧 - 圖片瀏覽(中)【圖片瀏覽器】瀏覽器
- iSee Pro for Mac圖片瀏覽器Mac瀏覽器
- GraphicConverter for Mac(圖片瀏覽器)Mac瀏覽器
- js 圖片瀏覽外掛原生JS
- 幻燈片式圖片瀏覽器瀏覽器
- 基於CefSharp開發(五)瀏覽器選單樣式瀏覽器
- 基於CefSharp開發(七)瀏覽器收藏夾選單瀏覽器
- IE瀏覽器下js無法獲取隱藏圖片尺寸簡單介紹瀏覽器JS
- iOS開發專案實戰——Swift實現圖片輪播與瀏覽iOSSwift
- 高效圖片瀏覽器:Pixea Plus for Mac瀏覽器Mac
- Mac圖片瀏覽軟體——XnViewMP for MacMacView
- GKPhotoBrowser--自定義圖片瀏覽器瀏覽器
- 圖片瀏覽器--學習筆記瀏覽器筆記
- 基於CefSharp開發瀏覽器(八)瀏覽器收藏夾欄瀏覽器
- 安卓圖片瀏覽(支援超大圖,附原始碼)安卓原始碼
- chrome瀏覽器不能顯示本地圖片辦法解決(圖片預覽)Chrome瀏覽器地圖
- 相容所有瀏覽器的圖片上傳本地預覽效果瀏覽器
- OS開發基礎——多執行緒的簡單應用執行緒
- UIScrollView瀏覽一組圖片,且圖片與圖片之間有間隔UIView
- 瀏覽器 Web 訪問剪下板圖片瀏覽器Web
- FotoTime Mac(圖片瀏覽管理器)Mac
- 如何實現一個圖片瀏覽器瀏覽器
- html背景圖片自適應瀏覽器HTML瀏覽器
- js拖動滑塊瀏覽圖片功能JS