+ Added Icons to the Editing Screens.

This commit is contained in:
moritz haarmann
2014-04-11 14:57:23 +02:00
parent 98eb731271
commit 96c60ec394
12 changed files with 101 additions and 18 deletions

View File

@@ -11,12 +11,16 @@
#import "BITRectangleImageAnnotation.h" #import "BITRectangleImageAnnotation.h"
#import "BITArrowImageAnnotation.h" #import "BITArrowImageAnnotation.h"
#import "BITBlurImageAnnotation.h" #import "BITBlurImageAnnotation.h"
#import "BITHockeyHelper.h"
#import "HockeySDKPrivate.h"
@interface BITImageAnnotationViewController () @interface BITImageAnnotationViewController ()
@property (nonatomic, strong) UIImageView *imageView; @property (nonatomic, strong) UIImageView *imageView;
@property (nonatomic, strong) UISegmentedControl *editingControls; @property (nonatomic, strong) UISegmentedControl *editingControls;
@property (nonatomic, strong) NSMutableArray *objects; @property (nonatomic, strong) NSMutableArray *objects;
@property (nonatomic, strong) UITapGestureRecognizer *tapRecognizer;
@property (nonatomic, strong) UIPanGestureRecognizer *panRecognizer; @property (nonatomic, strong) UIPanGestureRecognizer *panRecognizer;
@property (nonatomic, strong) UIPinchGestureRecognizer *pinchRecognizer; @property (nonatomic, strong) UIPinchGestureRecognizer *pinchRecognizer;
@@ -48,7 +52,15 @@
self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
NSArray *icons = @[@"Rectangle.png", @"Arrow.png", @"Blur.png"];
self.editingControls = [[UISegmentedControl alloc] initWithItems:@[@"Rectangle", @"Arrow", @"Blur"]]; self.editingControls = [[UISegmentedControl alloc] initWithItems:@[@"Rectangle", @"Arrow", @"Blur"]];
int i=0;
for (NSString *imageName in icons){
[self.editingControls setImage:bit_imageNamed(imageName, BITHOCKEYSDK_BUNDLE) forSegmentAtIndex:i++];
}
[self.editingControls setSegmentedControlStyle:UISegmentedControlStyleBar];
self.navigationItem.titleView = self.editingControls; self.navigationItem.titleView = self.editingControls;
@@ -66,19 +78,33 @@
[self.view addSubview:self.imageView]; [self.view addSubview:self.imageView];
self.imageView.frame = self.view.bounds; // Erm.
self.imageView.frame = [UIScreen mainScreen].bounds;
self.panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panned:)]; self.panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panned:)];
self.pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinched:)]; self.pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinched:)];
self.tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[self.panRecognizer requireGestureRecognizerToFail:self.tapRecognizer];
[self.imageView addGestureRecognizer:self.pinchRecognizer]; [self.imageView addGestureRecognizer:self.pinchRecognizer];
[self.imageView addGestureRecognizer:self.panRecognizer]; [self.imageView addGestureRecognizer:self.panRecognizer];
[self.view addGestureRecognizer:self.tapRecognizer];
self.imageView.userInteractionEnabled = YES; self.imageView.userInteractionEnabled = YES;
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc ] initWithTitle:@"Discard" style:UIBarButtonItemStyleBordered target:self action:@selector(discard:)]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc ] initWithTitle:@"Discard" style:UIBarButtonItemStyleBordered target:self action:@selector(discard:)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc ] initWithTitle:@"Save" style:UIBarButtonItemStyleBordered target:self action:@selector(save:)]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc ] initWithTitle:@"Save" style:UIBarButtonItemStyleBordered target:self action:@selector(save:)];
[self fitImageViewFrame];
// Do any additional setup after loading the view.
}
- (void)fitImageViewFrame {
CGFloat heightScaleFactor = self.view.frame.size.height / self.image.size.height; CGFloat heightScaleFactor = self.view.frame.size.height / self.image.size.height;
CGFloat widthScaleFactor = self.view.frame.size.width / self.image.size.width; CGFloat widthScaleFactor = self.view.frame.size.width / self.image.size.width;
@@ -87,9 +113,6 @@
CGSize scaledImageSize = CGSizeMake(self.image.size.width * factor, self.image.size.height * factor); CGSize scaledImageSize = CGSizeMake(self.image.size.width * factor, self.image.size.height * factor);
self.imageView.frame = CGRectMake(self.view.frame.size.width/2 - scaledImageSize.width/2, self.view.frame.size.height/2 - scaledImageSize.height/2, scaledImageSize.width, scaledImageSize.height); self.imageView.frame = CGRectMake(self.view.frame.size.width/2 - scaledImageSize.width/2, self.view.frame.size.height/2 - scaledImageSize.height/2, scaledImageSize.width, scaledImageSize.height);
// Do any additional setup after loading the view.
} }
-(void)editingAction:(id)sender { -(void)editingAction:(id)sender {
@@ -196,16 +219,6 @@
} }
} }
-(UIView *)firstAnnotationThatIsNotBlur {
for (BITImageAnnotation *annotation in self.imageView.subviews){
if (![annotation isKindOfClass:[BITBlurImageAnnotation class]]){
return annotation;
}
}
return self.imageView;
}
-(void)pinched:(UIPinchGestureRecognizer *)gestureRecognizer { -(void)pinched:(UIPinchGestureRecognizer *)gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateBegan){ if (gestureRecognizer.state == UIGestureRecognizerStateBegan){
// try to figure out which view we are talking about. // try to figure out which view we are talking about.
@@ -257,10 +270,40 @@
} }
} }
- (void)didReceiveMemoryWarning -(void)tapped:(UIGestureRecognizer *)tapRecognizer {
{ if (self.navigationController.navigationBarHidden){
[super didReceiveMemoryWarning]; // [[UIApplication sharedApplication] setStatusBarHidden:NO];
// Dispose of any resources that can be recreated. [UIView animateWithDuration:0.35f animations:^{
self.navigationController.navigationBar.alpha = 1;
} completion:^(BOOL finished) {
[self fitImageViewFrame];
[self.navigationController setNavigationBarHidden:NO animated:NO];
}];
} else {
[UIView animateWithDuration:0.35f animations:^{
self.navigationController.navigationBar.alpha = 0;
} completion:^(BOOL finished) {
[self.navigationController setNavigationBarHidden:YES animated:NO];
[self fitImageViewFrame];
}];
}
}
#pragma mark - Helpers
-(UIView *)firstAnnotationThatIsNotBlur {
for (BITImageAnnotation *annotation in self.imageView.subviews){
if (![annotation isKindOfClass:[BITBlurImageAnnotation class]]){
return annotation;
}
}
return self.imageView;
} }
@end @end

BIN
Resources/Arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

BIN
Resources/Arrow@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

BIN
Resources/Blur.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

BIN
Resources/Blur@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

BIN
Resources/Cancel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

BIN
Resources/Cancel@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

BIN
Resources/Ok.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

BIN
Resources/Ok@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

BIN
Resources/Rectangle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

BIN
Resources/Rectangle@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

View File

@@ -145,6 +145,16 @@
9760F6C418BB4D2D00959B93 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9760F6C318BB4D2D00959B93 /* AssetsLibrary.framework */; }; 9760F6C418BB4D2D00959B93 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9760F6C318BB4D2D00959B93 /* AssetsLibrary.framework */; };
9760F6CF18BB685600959B93 /* BITImageAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9760F6CD18BB685600959B93 /* BITImageAnnotation.h */; }; 9760F6CF18BB685600959B93 /* BITImageAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9760F6CD18BB685600959B93 /* BITImageAnnotation.h */; };
9760F6D018BB685600959B93 /* BITImageAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9760F6CE18BB685600959B93 /* BITImageAnnotation.m */; }; 9760F6D018BB685600959B93 /* BITImageAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9760F6CE18BB685600959B93 /* BITImageAnnotation.m */; };
9782023218F81BFC00A98D8B /* Arrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022818F81BFC00A98D8B /* Arrow.png */; };
9782023318F81BFC00A98D8B /* Arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022918F81BFC00A98D8B /* Arrow@2x.png */; };
9782023418F81BFC00A98D8B /* Blur.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022A18F81BFC00A98D8B /* Blur.png */; };
9782023518F81BFC00A98D8B /* Blur@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022B18F81BFC00A98D8B /* Blur@2x.png */; };
9782023618F81BFC00A98D8B /* Cancel.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022C18F81BFC00A98D8B /* Cancel.png */; };
9782023718F81BFC00A98D8B /* Cancel@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022D18F81BFC00A98D8B /* Cancel@2x.png */; };
9782023818F81BFC00A98D8B /* Ok.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022E18F81BFC00A98D8B /* Ok.png */; };
9782023918F81BFC00A98D8B /* Ok@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782022F18F81BFC00A98D8B /* Ok@2x.png */; };
9782023A18F81BFC00A98D8B /* Rectangle.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782023018F81BFC00A98D8B /* Rectangle.png */; };
9782023B18F81BFC00A98D8B /* Rectangle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9782023118F81BFC00A98D8B /* Rectangle@2x.png */; };
97F0F9FD18ABAECD00EF50AA /* iconCamera.png in Resources */ = {isa = PBXBuildFile; fileRef = 97F0F9FB18ABAECD00EF50AA /* iconCamera.png */; }; 97F0F9FD18ABAECD00EF50AA /* iconCamera.png in Resources */ = {isa = PBXBuildFile; fileRef = 97F0F9FB18ABAECD00EF50AA /* iconCamera.png */; };
97F0F9FE18ABAECD00EF50AA /* iconCamera@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 97F0F9FC18ABAECD00EF50AA /* iconCamera@2x.png */; }; 97F0F9FE18ABAECD00EF50AA /* iconCamera@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 97F0F9FC18ABAECD00EF50AA /* iconCamera@2x.png */; };
97F0FA0518B2294D00EF50AA /* BITFeedbackMessageAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 97F0FA0318AE5AED00EF50AA /* BITFeedbackMessageAttachment.m */; }; 97F0FA0518B2294D00EF50AA /* BITFeedbackMessageAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 97F0FA0318AE5AED00EF50AA /* BITFeedbackMessageAttachment.m */; };
@@ -319,6 +329,16 @@
9760F6C318BB4D2D00959B93 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; 9760F6C318BB4D2D00959B93 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
9760F6CD18BB685600959B93 /* BITImageAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITImageAnnotation.h; sourceTree = "<group>"; }; 9760F6CD18BB685600959B93 /* BITImageAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITImageAnnotation.h; sourceTree = "<group>"; };
9760F6CE18BB685600959B93 /* BITImageAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BITImageAnnotation.m; sourceTree = "<group>"; }; 9760F6CE18BB685600959B93 /* BITImageAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BITImageAnnotation.m; sourceTree = "<group>"; };
9782022818F81BFC00A98D8B /* Arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Arrow.png; sourceTree = "<group>"; };
9782022918F81BFC00A98D8B /* Arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Arrow@2x.png"; sourceTree = "<group>"; };
9782022A18F81BFC00A98D8B /* Blur.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Blur.png; sourceTree = "<group>"; };
9782022B18F81BFC00A98D8B /* Blur@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Blur@2x.png"; sourceTree = "<group>"; };
9782022C18F81BFC00A98D8B /* Cancel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Cancel.png; sourceTree = "<group>"; };
9782022D18F81BFC00A98D8B /* Cancel@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Cancel@2x.png"; sourceTree = "<group>"; };
9782022E18F81BFC00A98D8B /* Ok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Ok.png; sourceTree = "<group>"; };
9782022F18F81BFC00A98D8B /* Ok@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Ok@2x.png"; sourceTree = "<group>"; };
9782023018F81BFC00A98D8B /* Rectangle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Rectangle.png; sourceTree = "<group>"; };
9782023118F81BFC00A98D8B /* Rectangle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Rectangle@2x.png"; sourceTree = "<group>"; };
97F0F9FB18ABAECD00EF50AA /* iconCamera.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconCamera.png; sourceTree = "<group>"; }; 97F0F9FB18ABAECD00EF50AA /* iconCamera.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconCamera.png; sourceTree = "<group>"; };
97F0F9FC18ABAECD00EF50AA /* iconCamera@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iconCamera@2x.png"; sourceTree = "<group>"; }; 97F0F9FC18ABAECD00EF50AA /* iconCamera@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iconCamera@2x.png"; sourceTree = "<group>"; };
97F0F9FF18AE375E00EF50AA /* BITImageAnnotationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITImageAnnotationViewController.h; sourceTree = "<group>"; }; 97F0F9FF18AE375E00EF50AA /* BITImageAnnotationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITImageAnnotationViewController.h; sourceTree = "<group>"; };
@@ -382,6 +402,16 @@
1E5955A415B71BDC00A03429 /* Images */ = { 1E5955A415B71BDC00A03429 /* Images */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
9782022818F81BFC00A98D8B /* Arrow.png */,
9782022918F81BFC00A98D8B /* Arrow@2x.png */,
9782022A18F81BFC00A98D8B /* Blur.png */,
9782022B18F81BFC00A98D8B /* Blur@2x.png */,
9782022C18F81BFC00A98D8B /* Cancel.png */,
9782022D18F81BFC00A98D8B /* Cancel@2x.png */,
9782022E18F81BFC00A98D8B /* Ok.png */,
9782022F18F81BFC00A98D8B /* Ok@2x.png */,
9782023018F81BFC00A98D8B /* Rectangle.png */,
9782023118F81BFC00A98D8B /* Rectangle@2x.png */,
97F0F9FB18ABAECD00EF50AA /* iconCamera.png */, 97F0F9FB18ABAECD00EF50AA /* iconCamera.png */,
97F0F9FC18ABAECD00EF50AA /* iconCamera@2x.png */, 97F0F9FC18ABAECD00EF50AA /* iconCamera@2x.png */,
1E5955BB15B71C8600A03429 /* authorize_denied.png */, 1E5955BB15B71C8600A03429 /* authorize_denied.png */,
@@ -860,19 +890,29 @@
files = ( files = (
1E5955C615B71C8600A03429 /* authorize_denied.png in Resources */, 1E5955C615B71C8600A03429 /* authorize_denied.png in Resources */,
1E5955C715B71C8600A03429 /* authorize_denied@2x.png in Resources */, 1E5955C715B71C8600A03429 /* authorize_denied@2x.png in Resources */,
9782023B18F81BFC00A98D8B /* Rectangle@2x.png in Resources */,
1E5955CA15B71C8600A03429 /* bg.png in Resources */, 1E5955CA15B71C8600A03429 /* bg.png in Resources */,
97F0F9FD18ABAECD00EF50AA /* iconCamera.png in Resources */, 97F0F9FD18ABAECD00EF50AA /* iconCamera.png in Resources */,
9782023618F81BFC00A98D8B /* Cancel.png in Resources */,
9782023318F81BFC00A98D8B /* Arrow@2x.png in Resources */,
9782023818F81BFC00A98D8B /* Ok.png in Resources */,
1E5955CB15B71C8600A03429 /* buttonHighlight.png in Resources */, 1E5955CB15B71C8600A03429 /* buttonHighlight.png in Resources */,
1E5955CC15B71C8600A03429 /* buttonHighlight@2x.png in Resources */, 1E5955CC15B71C8600A03429 /* buttonHighlight@2x.png in Resources */,
1E5955CF15B71C8600A03429 /* IconGradient.png in Resources */, 1E5955CF15B71C8600A03429 /* IconGradient.png in Resources */,
1E5955D015B71C8600A03429 /* IconGradient@2x.png in Resources */, 1E5955D015B71C8600A03429 /* IconGradient@2x.png in Resources */,
9782023218F81BFC00A98D8B /* Arrow.png in Resources */,
9782023A18F81BFC00A98D8B /* Rectangle.png in Resources */,
1EAF20A8162DC0F600957B1D /* feedbackActivity@2x~ipad.png in Resources */, 1EAF20A8162DC0F600957B1D /* feedbackActivity@2x~ipad.png in Resources */,
1EAF20A9162DC0F600957B1D /* feedbackActivity~ipad.png in Resources */, 1EAF20A9162DC0F600957B1D /* feedbackActivity~ipad.png in Resources */,
9782023918F81BFC00A98D8B /* Ok@2x.png in Resources */,
9782023418F81BFC00A98D8B /* Blur.png in Resources */,
1EAF20AA162DC0F600957B1D /* feedbackActiviy.png in Resources */, 1EAF20AA162DC0F600957B1D /* feedbackActiviy.png in Resources */,
1EAF20AB162DC0F600957B1D /* feedbackActiviy@2x.png in Resources */, 1EAF20AB162DC0F600957B1D /* feedbackActiviy@2x.png in Resources */,
9782023518F81BFC00A98D8B /* Blur@2x.png in Resources */,
1E1127C416580C87007067A2 /* buttonRoundedDelete.png in Resources */, 1E1127C416580C87007067A2 /* buttonRoundedDelete.png in Resources */,
1E1127C516580C87007067A2 /* buttonRoundedDelete@2x.png in Resources */, 1E1127C516580C87007067A2 /* buttonRoundedDelete@2x.png in Resources */,
1E1127C616580C87007067A2 /* buttonRoundedDeleteHighlighted.png in Resources */, 1E1127C616580C87007067A2 /* buttonRoundedDeleteHighlighted.png in Resources */,
9782023718F81BFC00A98D8B /* Cancel@2x.png in Resources */,
1E1127C716580C87007067A2 /* buttonRoundedDeleteHighlighted@2x.png in Resources */, 1E1127C716580C87007067A2 /* buttonRoundedDeleteHighlighted@2x.png in Resources */,
1E1127C816580C87007067A2 /* buttonRoundedRegular.png in Resources */, 1E1127C816580C87007067A2 /* buttonRoundedRegular.png in Resources */,
97F0F9FE18ABAECD00EF50AA /* iconCamera@2x.png in Resources */, 97F0F9FE18ABAECD00EF50AA /* iconCamera@2x.png in Resources */,