Improve image viewer

This commit is contained in:
Yann Diorcet 2012-09-26 11:49:01 +02:00
parent f2fa4ac71a
commit b855b22b46
6 changed files with 221 additions and 155 deletions

View file

@ -21,12 +21,18 @@
#import "UICompositeViewController.h"
@interface ImageViewController : UIViewController<UICompositeViewDelegate, UIScrollViewDelegate> {
@interface UIImageScrollView : UIScrollView<UIScrollViewDelegate>
@property (nonatomic, retain) UIImage *image;
@property (readonly) IBOutlet UIImageView *imageView;
@end
@interface ImageViewController : UIViewController<UICompositeViewDelegate> {
}
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;
@property (nonatomic, retain) IBOutlet UIImageScrollView *scrollView;
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, retain) IBOutlet UIButton *backButton;

View file

@ -20,14 +20,103 @@
#import "ImageViewController.h"
#import "PhoneMainView.h"
@interface ImageViewController ()
@implementation UIImageScrollView
@synthesize image;
@synthesize imageView;
#pragma mark - Lifecycle Functions
- (void)initUIImageScrollView {
imageView = [[UIImageView alloc] init];
self.delegate = self;
[self addSubview:imageView];
}
- (id)init {
self = [super init];
if(self != nil) {
[self initUIImageScrollView];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if(self != nil) {
[self initUIImageScrollView];
}
return self;
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self != nil) {
[self initUIImageScrollView];
}
return self;
}
- (void)dealloc {
[image release];
[imageView dealloc];
[super dealloc];
}
#pragma mark - ViewController Functions
- (void)layoutSubviews {
[super layoutSubviews];
// center the image as it becomes smaller than the size of the screen
CGSize boundsSize = self.bounds.size;
CGRect frameToCenter = imageView.frame;
// center horizontally
if (frameToCenter.size.width < boundsSize.width)
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
else
frameToCenter.origin.x = 0;
// center vertically
if (frameToCenter.size.height < boundsSize.height)
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
else
frameToCenter.origin.y = 0;
imageView.frame = frameToCenter;
}
#pragma mark - Property Functions
- (void)setImage:(UIImage *)aimage {
imageView.image = aimage;
imageView.frame = CGRectMake(0, 0, aimage.size.width, aimage.size.height);
self.contentSize = aimage.size;
[self zoomToRect:imageView.bounds animated:FALSE];
self.minimumZoomScale = self.zoomScale;
}
- (UIImage *)image {
return imageView.image;
}
#pragma mark - UIScrollViewDelegate Functions
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return imageView;
}
@end
@implementation ImageViewController
@synthesize scrollView;
@synthesize imageView;
@synthesize backButton;
@synthesize image;
@ -40,7 +129,6 @@
- (void)dealloc {
[scrollView release];
[imageView release];
[backButton release];
[image release];
@ -68,27 +156,14 @@ static UICompositeViewDescription *compositeDescription = nil;
}
#pragma mark - ViewController Functions
- (void)viewDidLoad {
[super viewDidLoad];
[scrollView setDelegate:self];
}
#pragma mark - Property Functions
- (void)setImage:(UIImage *)aimage {
imageView.image = aimage;
imageView.frame = CGRectMake(0, 0, aimage.size.width, aimage.size.height);
scrollView.contentSize = aimage.size;
[scrollView zoomToRect:imageView.bounds animated:FALSE];
scrollView.minimumZoomScale = scrollView.zoomScale;
scrollView.image = aimage;
}
- (UIImage *)image {
return imageView.image;
return scrollView.image;
}
@ -100,11 +175,4 @@ static UICompositeViewDescription *compositeDescription = nil;
}
}
#pragma mark - UIScrollViewDelegate Functions
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView;
}
@end

View file

@ -123,24 +123,10 @@
<object class="IBUIScrollView" id="814051133">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIImageView" id="170933358">
<reference key="NSNextResponder" ref="814051133"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 416}</string>
<reference key="NSSuperview" ref="814051133"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="986758619"/>
<int key="IBUIContentMode">4</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<string key="NSFrame">{{0, 44}, {320, 416}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="170933358"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
@ -180,14 +166,6 @@
</object>
<int key="connectionID">8</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">imageView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="170933358"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">scrollView</string>
@ -259,18 +237,10 @@
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="814051133"/>
<array class="NSMutableArray" key="children">
<reference ref="170933358"/>
</array>
<array class="NSMutableArray" key="children"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">scrollView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="170933358"/>
<reference key="parent" ref="814051133"/>
<string key="objectName">imageView</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -280,8 +250,8 @@
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="12.CustomClassName">UIImageScrollView</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="7.IBUIButtonInspectorSelectedEdgeInsetMetadataKey"/>
@ -311,21 +281,16 @@
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="backButton">UIButton</string>
<string key="imageView">UIImageView</string>
<string key="scrollView">UIScrollView</string>
<string key="scrollView">UIImageScrollView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="backButton">
<string key="name">backButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="imageView">
<string key="name">imageView</string>
<string key="candidateClassName">UIImageView</string>
</object>
<object class="IBToOneOutletInfo" key="scrollView">
<string key="name">scrollView</string>
<string key="candidateClassName">UIScrollView</string>
<string key="candidateClassName">UIImageScrollView</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@ -333,6 +298,25 @@
<string key="minorKey">./Classes/ImageViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageScrollView</string>
<string key="superclassName">UIScrollView</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">imageView</string>
<string key="NS.object.0">UIImageView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">imageView</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">imageView</string>
<string key="candidateClassName">UIImageView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIImageScrollView.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>

View file

@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1536</int>
<int key="IBDocument.SystemTarget">1280</int>
<string key="IBDocument.SystemVersion">11E53</string>
<string key="IBDocument.InterfaceBuilderVersion">2840</string>
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138.47</string>
<string key="IBDocument.HIToolboxVersion">569.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1926</string>
<string key="NS.object.0">933</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIButton</string>
<string>IBUIImageView</string>
<string>IBUIScrollView</string>
<string>IBUIView</string>
<string>IBUIScrollView</string>
<string>IBProxyObject</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -34,7 +34,7 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIView" id="350805517">
@ -120,22 +120,8 @@
<object class="IBUIScrollView" id="814051133">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIImageView" id="170933358">
<reference key="NSNextResponder" ref="814051133"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 416}</string>
<reference key="NSSuperview" ref="814051133"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="986758619"/>
<int key="IBUIContentMode">4</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<string key="NSFrame">{{0, 44}, {320, 416}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="170933358"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
@ -149,7 +135,6 @@
</object>
</array>
<string key="NSFrame">{{0, 20}, {320, 460}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView" ref="350805517"/>
<reference key="IBUIBackgroundColor" ref="986758619"/>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
@ -174,14 +159,6 @@
</object>
<int key="connectionID">8</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">imageView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="170933358"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">scrollView</string>
@ -253,18 +230,10 @@
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="814051133"/>
<array class="NSMutableArray" key="children">
<reference ref="170933358"/>
</array>
<array class="NSMutableArray" key="children"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">scrollView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="170933358"/>
<reference key="parent" ref="814051133"/>
<string key="objectName">imageView</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -274,8 +243,8 @@
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="12.CustomClassName">UIImageScrollView</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="7.IBUIButtonInspectorSelectedEdgeInsetMetadataKey"/>
@ -287,7 +256,62 @@
<nil key="sourceID"/>
<int key="maxID">13</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">ImageViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">onBackClick:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">onBackClick:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">onBackClick:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="backButton">UIButton</string>
<string key="scrollView">UIImageScrollView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="backButton">
<string key="name">backButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="scrollView">
<string key="name">scrollView</string>
<string key="candidateClassName">UIImageScrollView</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/ImageViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageScrollView</string>
<string key="superclassName">UIScrollView</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">imageView</string>
<string key="NS.object.0">UIImageView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">imageView</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">imageView</string>
<string key="candidateClassName">UIImageView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIImageScrollView.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
@ -297,6 +321,6 @@
<string key="image_back_over.png">{320, 88}</string>
<string key="toolsbar_background.png">{5, 88}</string>
</dictionary>
<string key="IBCocoaTouchPluginVersion">1926</string>
<string key="IBCocoaTouchPluginVersion">933</string>
</data>
</archive>

View file

@ -5062,17 +5062,17 @@
<dict>
<key>backup</key>
<dict>
<key>10</key>
<key>11</key>
<dict>
<key>class</key>
<string>BLWrapperHandle</string>
<key>name</key>
<string>Classes/ImageViewController/10/ImageViewController.xib</string>
<string>Classes/ImageViewController/11/ImageViewController.xib</string>
</dict>
</dict>
</dict>
<key>change date</key>
<date>2012-09-25T15:43:59Z</date>
<date>2012-09-26T09:40:46Z</date>
<key>changed values</key>
<array/>
<key>class</key>
@ -5082,7 +5082,7 @@
<key>flags</key>
<integer>0</integer>
<key>hash</key>
<string>a6f92c4f1f39135867bae2c55aab1d43
<string>32d1e1b03fac80638e7b7a220e1bc52f
</string>
<key>name</key>
<string>ImageViewController.xib</string>
@ -5146,9 +5146,9 @@
<key>versions</key>
<dict>
<key>en</key>
<string>10</string>
<string>11</string>
<key>fr</key>
<string>10</string>
<string>11</string>
</dict>
</dict>
<dict>

View file

@ -123,24 +123,10 @@
<object class="IBUIScrollView" id="814051133">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIImageView" id="170933358">
<reference key="NSNextResponder" ref="814051133"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 416}</string>
<reference key="NSSuperview" ref="814051133"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<reference key="IBUIBackgroundColor" ref="986758619"/>
<int key="IBUIContentMode">4</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<string key="NSFrame">{{0, 44}, {320, 416}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="170933358"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
@ -180,14 +166,6 @@
</object>
<int key="connectionID">8</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">imageView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="170933358"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">scrollView</string>
@ -259,18 +237,10 @@
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="814051133"/>
<array class="NSMutableArray" key="children">
<reference ref="170933358"/>
</array>
<array class="NSMutableArray" key="children"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">scrollView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="170933358"/>
<reference key="parent" ref="814051133"/>
<string key="objectName">imageView</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -280,8 +250,8 @@
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="12.CustomClassName">UIImageScrollView</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="7.IBUIButtonInspectorSelectedEdgeInsetMetadataKey"/>
@ -311,21 +281,16 @@
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="backButton">UIButton</string>
<string key="imageView">UIImageView</string>
<string key="scrollView">UIScrollView</string>
<string key="scrollView">UIImageScrollView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="backButton">
<string key="name">backButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="imageView">
<string key="name">imageView</string>
<string key="candidateClassName">UIImageView</string>
</object>
<object class="IBToOneOutletInfo" key="scrollView">
<string key="name">scrollView</string>
<string key="candidateClassName">UIScrollView</string>
<string key="candidateClassName">UIImageScrollView</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@ -333,6 +298,25 @@
<string key="minorKey">./Classes/ImageViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageScrollView</string>
<string key="superclassName">UIScrollView</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">imageView</string>
<string key="NS.object.0">UIImageView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">imageView</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">imageView</string>
<string key="candidateClassName">UIImageView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIImageScrollView.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>