Remove NSString and UIImage categories, so the static library doesn't require the linker flag -all_load

The flag shouldn't be required, and worked in the demo project absolutely fine. But from now to then there was an Xcode bug that made it required again and some non reproducible scenarios where reported by users where it doesn't work without the flag. To fix this for always and forever, we don't use categories any more.
This commit is contained in:
Andreas Linde 2012-08-30 15:16:16 +02:00
parent 7827524e04
commit 6967748148
9 changed files with 325 additions and 403 deletions

44
Classes/BITHockeyHelper.h Normal file
View File

@ -0,0 +1,44 @@
/*
* Author: Andreas Linde <mail@andreaslinde.de>
*
* Copyright (c) 2012 HockeyApp, Bit Stadium GmbH.
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
/* NSString helpers */
NSString *bit_URLEncodedString(NSString *inputString);
NSString *bit_URLDecodedString(NSString *inputString);
NSComparisonResult bit_versionCompare(NSString *stringA, NSString *stringB);
/* UIImage helpers */
UIImage *bit_roundedCornerImage(UIImage *inputImage, NSInteger cornerSize, NSInteger borderSize);
UIImage *bit_imageToFitSize(UIImage *inputImage, CGSize fitSize, BOOL honorScaleFactor);
UIImage *bit_reflectedImageWithHeight(UIImage *inputImage, NSUInteger height, float fromAlpha, float toAlpha);
UIImage *bit_initWithContentsOfResolutionIndependentFile(NSString * path) NS_RETURNS_RETAINED;
UIImage *bit_imageWithContentsOfResolutionIndependentFile(NSString * path);
UIImage *bit_imageNamed(NSString *imageName, NSString *bundleName);

View File

@ -1,148 +1,91 @@
// /*
// UIImage+BITHockeyAdditions.m * Author: Andreas Linde <mail@andreaslinde.de>
// *
// Created by Peter Steinberger on 10.01.11. * Copyright (c) 2012 HockeyApp, Bit Stadium GmbH.
// Copyright (c) 2011-2012 Peter Steinberger. * All rights reserved.
// Copyright (c) 2012 HockeyApp, Bit Stadium GmbH. *
// All rights reserved. * Permission is hereby granted, free of charge, to any person
// * obtaining a copy of this software and associated documentation
// Permission is hereby granted, free of charge, to any person obtaining a copy * files (the "Software"), to deal in the Software without
// of this software and associated documentation files (the "Software"), to deal * restriction, including without limitation the rights to use,
// in the Software without restriction, including without limitation the rights * copy, modify, merge, publish, distribute, sublicense, and/or sell
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the
// copies of the Software, and to permit persons to whom the Software is * Software is furnished to do so, subject to the following
// furnished to do so, subject to the following conditions: * conditions:
// *
// The above copyright notice and this permission notice shall be included in * The above copyright notice and this permission notice shall be
// all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
// *
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// THE SOFTWARE. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#import "UIImage+BITHockeyAdditions.h"
// Private helper methods #import "BITHockeyHelper.h"
@interface UIImage (BITHockeyAdditionsPrivate)
- (void)bit_addRoundedRectToPath:(CGRect)rect context:(CGContextRef)context ovalWidth:(CGFloat)ovalWidth ovalHeight:(CGFloat)ovalHeight;
@end
@implementation UIImage (BITHockeyAdditions) #pragma mark NSString helpers
static CGContextRef MyOpenBitmapContext(int pixelsWide, int pixelsHigh); NSString *bit_URLEncodedString(NSString *inputString) {
static CGImageRef CreateGradientImage(int pixelsWide, int pixelsHigh, float fromAlpha, float toAlpha); NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)inputString,
// Returns true if the image has an alpha layer NULL,
- (BOOL)hasAlpha { CFSTR("!*'();:@&=+$,/?%#[]"),
CGImageAlphaInfo alpha = CGImageGetAlphaInfo(self.CGImage); kCFStringEncodingUTF8);
return (alpha == kCGImageAlphaFirst || [result autorelease];
alpha == kCGImageAlphaLast || return result;
alpha == kCGImageAlphaPremultipliedFirst ||
alpha == kCGImageAlphaPremultipliedLast);
} }
// Returns a copy of the given image, adding an alpha channel if it doesn't already have one NSString *bit_URLDecodedString(NSString *inputString) {
- (UIImage *)imageWithAlpha { NSString *result = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
if ([self hasAlpha]) { (CFStringRef)inputString,
return self; CFSTR(""),
kCFStringEncodingUTF8);
[result autorelease];
return result;
} }
CGImageRef imageRef = self.CGImage; NSComparisonResult bit_versionCompare(NSString *stringA, NSString *stringB) {
size_t width = CGImageGetWidth(imageRef) * self.scale; // Extract plain version number from self
size_t height = CGImageGetHeight(imageRef) * self.scale; NSString *plainSelf = stringA;
NSRange letterRange = [plainSelf rangeOfCharacterFromSet: [NSCharacterSet letterCharacterSet]];
if (letterRange.length)
plainSelf = [plainSelf substringToIndex: letterRange.location];
// The bitsPerComponent and bitmapInfo values are hard-coded to prevent an "unsupported parameter combination" error // Extract plain version number from other
CGContextRef offscreenContext = CGBitmapContextCreate(NULL, NSString *plainOther = stringB;
width, letterRange = [plainOther rangeOfCharacterFromSet: [NSCharacterSet letterCharacterSet]];
height, if (letterRange.length)
8, plainOther = [plainOther substringToIndex: letterRange.location];
0,
CGImageGetColorSpace(imageRef),
kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);
// Draw the image into the context and retrieve the new image, which will now have an alpha layer // Compare plain versions
CGContextDrawImage(offscreenContext, CGRectMake(0, 0, width, height), imageRef); NSComparisonResult result = [plainSelf compare:plainOther options:NSNumericSearch];
CGImageRef imageRefWithAlpha = CGBitmapContextCreateImage(offscreenContext);
UIImage *imageWithAlpha = [UIImage imageWithCGImage:imageRefWithAlpha];
// Clean up // If plain versions are equal, compare full versions
CGContextRelease(offscreenContext); if (result == NSOrderedSame)
CGImageRelease(imageRefWithAlpha); result = [stringA compare:stringB options:NSNumericSearch];
return imageWithAlpha; // Done
return result;
} }
// Creates a copy of this image with rounded corners
// If borderSize is non-zero, a transparent border of the given size will also be added
// Original author: Björn Sållarp. Used with permission. See: http://blog.sallarp.com/iphone-uiimage-round-corners/
- (UIImage *)bit_roundedCornerImage:(NSInteger)cornerSize borderSize:(NSInteger)borderSize {
// If the image does not have an alpha layer, add one
UIImage *roundedImage = nil; #pragma mark UIImage private helpers
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0); // 0.0 for scale means "correct scale for device's main screen".
CGImageRef sourceImg = CGImageCreateWithImageInRect([self CGImage], CGRectMake(0, 0, self.size.width * self.scale, self.size.height * self.scale)); // cropping happens here.
// Create a clipping path with rounded corners static void bit_addRoundedRectToPath(CGRect rect, CGContextRef context, CGFloat ovalWidth, CGFloat ovalHeight);
CGContextRef context = UIGraphicsGetCurrentContext(); static CGContextRef bit_MyOpenBitmapContext(int pixelsWide, int pixelsHigh);
CGContextBeginPath(context); static CGImageRef bit_CreateGradientImage(int pixelsWide, int pixelsHigh, float fromAlpha, float toAlpha);
[self addRoundedRectToPath:CGRectMake(borderSize, borderSize, self.size.width - borderSize * 2, self.size.height - borderSize * 2) static BOOL bit_hasAlpha(UIImage *inputImage);
context:context UIImage *bit_imageWithAlpha(UIImage *inputImage);
ovalWidth:cornerSize
ovalHeight:cornerSize];
CGContextClosePath(context);
CGContextClip(context);
roundedImage = [UIImage imageWithCGImage:sourceImg scale:0.0 orientation:self.imageOrientation]; // create cropped UIImage.
[roundedImage drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; // the actual scaling happens here, and orientation is taken care of automatically.
CGImageRelease(sourceImg);
roundedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (!roundedImage) {
// Try older method.
UIImage *image = [self imageWithAlpha];
// Build a context that's the same dimensions as the new size
CGContextRef context = CGBitmapContextCreate(NULL,
image.size.width,
image.size.height,
CGImageGetBitsPerComponent(image.CGImage),
0,
CGImageGetColorSpace(image.CGImage),
CGImageGetBitmapInfo(image.CGImage));
// Create a clipping path with rounded corners
CGContextBeginPath(context);
[self addRoundedRectToPath:CGRectMake(borderSize, borderSize, image.size.width - borderSize * 2, image.size.height - borderSize * 2)
context:context
ovalWidth:cornerSize
ovalHeight:cornerSize];
CGContextClosePath(context);
CGContextClip(context);
// Draw the image to the context; the clipping path will make anything outside the rounded rect transparent
CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage);
// Create a CGImage from the context
CGImageRef clippedImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
// Create a UIImage from the CGImage
roundedImage = [UIImage imageWithCGImage:clippedImage];
CGImageRelease(clippedImage);
}
return roundedImage;
}
#pragma mark - Private helper methods
// Adds a rectangular path to the given context and rounds its corners by the given extents // Adds a rectangular path to the given context and rounds its corners by the given extents
// Original author: Björn Sållarp. Used with permission. See: http://blog.sallarp.com/iphone-uiimage-round-corners/ // Original author: Björn Sållarp. Used with permission. See: http://blog.sallarp.com/iphone-uiimage-round-corners/
- (void)addRoundedRectToPath:(CGRect)rect context:(CGContextRef)context ovalWidth:(CGFloat)ovalWidth ovalHeight:(CGFloat)ovalHeight { void bit_addRoundedRectToPath(CGRect rect, CGContextRef context, CGFloat ovalWidth, CGFloat ovalHeight) {
if (ovalWidth == 0 || ovalHeight == 0) { if (ovalWidth == 0 || ovalHeight == 0) {
CGContextAddRect(context, rect); CGContextAddRect(context, rect);
return; return;
@ -161,77 +104,7 @@ static CGImageRef CreateGradientImage(int pixelsWide, int pixelsHigh, float from
CGContextRestoreGState(context); CGContextRestoreGState(context);
} }
- (UIImage *)bit_imageToFitSize:(CGSize)fitSize honorScaleFactor:(BOOL)honorScaleFactor CGImageRef bit_CreateGradientImage(int pixelsWide, int pixelsHigh, float fromAlpha, float toAlpha) {
{
float imageScaleFactor = 1.0;
if (honorScaleFactor) {
if ([self respondsToSelector:@selector(scale)]) {
imageScaleFactor = [self scale];
}
}
float sourceWidth = [self size].width * imageScaleFactor;
float sourceHeight = [self size].height * imageScaleFactor;
float targetWidth = fitSize.width;
float targetHeight = fitSize.height;
// Calculate aspect ratios
float sourceRatio = sourceWidth / sourceHeight;
float targetRatio = targetWidth / targetHeight;
// Determine what side of the source image to use for proportional scaling
BOOL scaleWidth = (sourceRatio <= targetRatio);
// Deal with the case of just scaling proportionally to fit, without cropping
scaleWidth = !scaleWidth;
// Proportionally scale source image
float scalingFactor, scaledWidth, scaledHeight;
if (scaleWidth) {
scalingFactor = 1.0 / sourceRatio;
scaledWidth = targetWidth;
scaledHeight = round(targetWidth * scalingFactor);
} else {
scalingFactor = sourceRatio;
scaledWidth = round(targetHeight * scalingFactor);
scaledHeight = targetHeight;
}
// Calculate compositing rectangles
CGRect sourceRect, destRect;
sourceRect = CGRectMake(0, 0, sourceWidth, sourceHeight);
destRect = CGRectMake(0, 0, scaledWidth, scaledHeight);
// Create appropriately modified image.
UIImage *image = nil;
UIGraphicsBeginImageContextWithOptions(destRect.size, NO, honorScaleFactor ? 0.0 : 1.0); // 0.0 for scale means "correct scale for device's main screen".
CGImageRef sourceImg = CGImageCreateWithImageInRect([self CGImage], sourceRect); // cropping happens here.
image = [UIImage imageWithCGImage:sourceImg scale:0.0 orientation:self.imageOrientation]; // create cropped UIImage.
[image drawInRect:destRect]; // the actual scaling happens here, and orientation is taken care of automatically.
CGImageRelease(sourceImg);
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (!image) {
// Try older method.
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, scaledWidth, scaledHeight, 8, (fitSize.width * 4),
colorSpace, kCGImageAlphaPremultipliedLast);
CGImageRef sourceImg = CGImageCreateWithImageInRect([self CGImage], sourceRect);
CGContextDrawImage(context, destRect, sourceImg);
CGImageRelease(sourceImg);
CGImageRef finalImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
image = [UIImage imageWithCGImage:finalImage];
CGImageRelease(finalImage);
}
return image;
}
CGImageRef CreateGradientImage(int pixelsWide, int pixelsHigh, float fromAlpha, float toAlpha) {
CGImageRef theCGImage = NULL; CGImageRef theCGImage = NULL;
// gradient is always black-white and the mask must be in the gray colorspace // gradient is always black-white and the mask must be in the gray colorspace
@ -266,7 +139,7 @@ CGImageRef CreateGradientImage(int pixelsWide, int pixelsHigh, float fromAlpha,
return theCGImage; return theCGImage;
} }
CGContextRef MyOpenBitmapContext(int pixelsWide, int pixelsHigh) { CGContextRef bit_MyOpenBitmapContext(int pixelsWide, int pixelsHigh) {
CGSize size = CGSizeMake(pixelsWide, pixelsHigh); CGSize size = CGSizeMake(pixelsWide, pixelsHigh);
if (UIGraphicsBeginImageContextWithOptions != NULL) { if (UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
@ -278,25 +151,137 @@ CGContextRef MyOpenBitmapContext(int pixelsWide, int pixelsHigh) {
return UIGraphicsGetCurrentContext(); return UIGraphicsGetCurrentContext();
} }
- (UIImage *)bit_reflectedImageWithHeight:(NSUInteger)height fromAlpha:(float)fromAlpha toAlpha:(float)toAlpha {
// Returns true if the image has an alpha layer
BOOL bit_hasAlpha(UIImage *inputImage) {
CGImageAlphaInfo alpha = CGImageGetAlphaInfo(inputImage.CGImage);
return (alpha == kCGImageAlphaFirst ||
alpha == kCGImageAlphaLast ||
alpha == kCGImageAlphaPremultipliedFirst ||
alpha == kCGImageAlphaPremultipliedLast);
}
// Returns a copy of the given image, adding an alpha channel if it doesn't already have one
UIImage *bit_imageWithAlpha(UIImage *inputImage) {
if (bit_hasAlpha(inputImage)) {
return inputImage;
}
CGImageRef imageRef = inputImage.CGImage;
size_t width = CGImageGetWidth(imageRef) * inputImage.scale;
size_t height = CGImageGetHeight(imageRef) * inputImage.scale;
// The bitsPerComponent and bitmapInfo values are hard-coded to prevent an "unsupported parameter combination" error
CGContextRef offscreenContext = CGBitmapContextCreate(NULL,
width,
height,
8,
0,
CGImageGetColorSpace(imageRef),
kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);
// Draw the image into the context and retrieve the new image, which will now have an alpha layer
CGContextDrawImage(offscreenContext, CGRectMake(0, 0, width, height), imageRef);
CGImageRef imageRefWithAlpha = CGBitmapContextCreateImage(offscreenContext);
UIImage *imageWithAlpha = [UIImage imageWithCGImage:imageRefWithAlpha];
// Clean up
CGContextRelease(offscreenContext);
CGImageRelease(imageRefWithAlpha);
return imageWithAlpha;
}
#pragma mark UIImage helpers
UIImage *bit_imageToFitSize(UIImage *inputImage, CGSize fitSize, BOOL honorScaleFactor) {
float imageScaleFactor = 1.0;
if (honorScaleFactor) {
if ([inputImage respondsToSelector:@selector(scale)]) {
imageScaleFactor = [inputImage scale];
}
}
float sourceWidth = [inputImage size].width * imageScaleFactor;
float sourceHeight = [inputImage size].height * imageScaleFactor;
float targetWidth = fitSize.width;
float targetHeight = fitSize.height;
// Calculate aspect ratios
float sourceRatio = sourceWidth / sourceHeight;
float targetRatio = targetWidth / targetHeight;
// Determine what side of the source image to use for proportional scaling
BOOL scaleWidth = (sourceRatio <= targetRatio);
// Deal with the case of just scaling proportionally to fit, without cropping
scaleWidth = !scaleWidth;
// Proportionally scale source image
float scalingFactor, scaledWidth, scaledHeight;
if (scaleWidth) {
scalingFactor = 1.0 / sourceRatio;
scaledWidth = targetWidth;
scaledHeight = round(targetWidth * scalingFactor);
} else {
scalingFactor = sourceRatio;
scaledWidth = round(targetHeight * scalingFactor);
scaledHeight = targetHeight;
}
// Calculate compositing rectangles
CGRect sourceRect, destRect;
sourceRect = CGRectMake(0, 0, sourceWidth, sourceHeight);
destRect = CGRectMake(0, 0, scaledWidth, scaledHeight);
// Create appropriately modified image.
UIImage *image = nil;
UIGraphicsBeginImageContextWithOptions(destRect.size, NO, honorScaleFactor ? 0.0 : 1.0); // 0.0 for scale means "correct scale for device's main screen".
CGImageRef sourceImg = CGImageCreateWithImageInRect([inputImage CGImage], sourceRect); // cropping happens here.
image = [UIImage imageWithCGImage:sourceImg scale:0.0 orientation:inputImage.imageOrientation]; // create cropped UIImage.
[image drawInRect:destRect]; // the actual scaling happens here, and orientation is taken care of automatically.
CGImageRelease(sourceImg);
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (!image) {
// Try older method.
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, scaledWidth, scaledHeight, 8, (fitSize.width * 4),
colorSpace, kCGImageAlphaPremultipliedLast);
CGImageRef sourceImg = CGImageCreateWithImageInRect([inputImage CGImage], sourceRect);
CGContextDrawImage(context, destRect, sourceImg);
CGImageRelease(sourceImg);
CGImageRef finalImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
image = [UIImage imageWithCGImage:finalImage];
CGImageRelease(finalImage);
}
return image;
}
UIImage *bit_reflectedImageWithHeight(UIImage *inputImage, NSUInteger height, float fromAlpha, float toAlpha) {
if(height == 0) if(height == 0)
return nil; return nil;
// create a bitmap graphics context the size of the image // create a bitmap graphics context the size of the image
CGContextRef mainViewContentContext = MyOpenBitmapContext(self.size.width, height); CGContextRef mainViewContentContext = bit_MyOpenBitmapContext(inputImage.size.width, height);
// create a 2 bit CGImage containing a gradient that will be used for masking the // create a 2 bit CGImage containing a gradient that will be used for masking the
// main view content to create the 'fade' of the reflection. The CGImageCreateWithMask // main view content to create the 'fade' of the reflection. The CGImageCreateWithMask
// function will stretch the bitmap image as required, so we can create a 1 pixel wide gradient // function will stretch the bitmap image as required, so we can create a 1 pixel wide gradient
CGImageRef gradientMaskImage = CreateGradientImage(1, height, fromAlpha, toAlpha); CGImageRef gradientMaskImage = bit_CreateGradientImage(1, height, fromAlpha, toAlpha);
// create an image by masking the bitmap of the mainView content with the gradient view // create an image by masking the bitmap of the mainView content with the gradient view
// then release the pre-masked content bitmap and the gradient bitmap // then release the pre-masked content bitmap and the gradient bitmap
CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, 0.0, self.size.width, height), gradientMaskImage); CGContextClipToMask(mainViewContentContext, CGRectMake(0.0, 0.0, inputImage.size.width, height), gradientMaskImage);
CGImageRelease(gradientMaskImage); CGImageRelease(gradientMaskImage);
// draw the image into the bitmap context // draw the image into the bitmap context
CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, self.size.width, self.size.height), self.CGImage); CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, inputImage.size.width, inputImage.size.height), inputImage.CGImage);
// convert the finished reflection image to a UIImage // convert the finished reflection image to a UIImage
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); // returns autoreleased UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); // returns autoreleased
@ -305,7 +290,8 @@ CGContextRef MyOpenBitmapContext(int pixelsWide, int pixelsHigh) {
return theImage; return theImage;
} }
- (id)bit_initWithContentsOfResolutionIndependentFile:(NSString *)path {
UIImage *bit_initWithContentsOfResolutionIndependentFile(NSString * path) {
if ([UIScreen instancesRespondToSelector:@selector(scale)] && (int)[[UIScreen mainScreen] scale] == 2.0) { if ([UIScreen instancesRespondToSelector:@selector(scale)] && (int)[[UIScreen mainScreen] scale] == 2.0) {
NSString *path2x = [[path stringByDeletingLastPathComponent] NSString *path2x = [[path stringByDeletingLastPathComponent]
stringByAppendingPathComponent:[NSString stringWithFormat:@"%@@2x.%@", stringByAppendingPathComponent:[NSString stringWithFormat:@"%@@2x.%@",
@ -313,26 +299,85 @@ CGContextRef MyOpenBitmapContext(int pixelsWide, int pixelsHigh) {
[path pathExtension]]]; [path pathExtension]]];
if ([[NSFileManager defaultManager] fileExistsAtPath:path2x]) { if ([[NSFileManager defaultManager] fileExistsAtPath:path2x]) {
return [self initWithContentsOfFile:path2x]; return [[UIImage alloc] initWithContentsOfFile:path2x];
} }
} }
return [self initWithContentsOfFile:path]; return [[UIImage alloc] initWithContentsOfFile:path];
} }
+ (UIImage*)bit_imageWithContentsOfResolutionIndependentFile:(NSString *)path {
UIImage *bit_imageWithContentsOfResolutionIndependentFile(NSString *path) {
#ifndef __clang_analyzer__ #ifndef __clang_analyzer__
// clang alayzer in 4.2b3 thinks here's a leak, which is not the case. // clang alayzer in 4.2b3 thinks here's a leak, which is not the case.
return [[[UIImage alloc] bit_initWithContentsOfResolutionIndependentFile:path] autorelease]; UIImage *newImage = bit_initWithContentsOfResolutionIndependentFile(path);
return [newImage autorelease];
#endif #endif
} }
+ (UIImage *)bit_imageNamed:(NSString *)imageName bundle:(NSString *)bundleName { UIImage *bit_imageNamed(NSString *imageName, NSString *bundleName) {
NSString *resourcePath = [[NSBundle mainBundle] resourcePath]; NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *bundlePath = [resourcePath stringByAppendingPathComponent:bundleName]; NSString *bundlePath = [resourcePath stringByAppendingPathComponent:bundleName];
NSString *imagePath = [bundlePath stringByAppendingPathComponent:imageName]; NSString *imagePath = [bundlePath stringByAppendingPathComponent:imageName];
return [UIImage bit_imageWithContentsOfResolutionIndependentFile:imagePath]; return bit_imageWithContentsOfResolutionIndependentFile(imagePath);
} }
@end
// Creates a copy of this image with rounded corners
// If borderSize is non-zero, a transparent border of the given size will also be added
// Original author: Björn Sållarp. Used with permission. See: http://blog.sallarp.com/iphone-uiimage-round-corners/
UIImage *bit_roundedCornerImage(UIImage *inputImage, NSInteger cornerSize, NSInteger borderSize) {
// If the image does not have an alpha layer, add one
UIImage *roundedImage = nil;
UIGraphicsBeginImageContextWithOptions(inputImage.size, NO, 0.0); // 0.0 for scale means "correct scale for device's main screen".
CGImageRef sourceImg = CGImageCreateWithImageInRect([inputImage CGImage], CGRectMake(0, 0, inputImage.size.width * inputImage.scale, inputImage.size.height * inputImage.scale)); // cropping happens here.
// Create a clipping path with rounded corners
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
bit_addRoundedRectToPath(CGRectMake(borderSize, borderSize, inputImage.size.width - borderSize * 2, inputImage.size.height - borderSize * 2), context, cornerSize, cornerSize);
CGContextClosePath(context);
CGContextClip(context);
roundedImage = [UIImage imageWithCGImage:sourceImg scale:0.0 orientation:inputImage.imageOrientation]; // create cropped UIImage.
[roundedImage drawInRect:CGRectMake(0, 0, inputImage.size.width, inputImage.size.height)]; // the actual scaling happens here, and orientation is taken care of automatically.
CGImageRelease(sourceImg);
roundedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (!roundedImage) {
// Try older method.
UIImage *image = bit_imageWithAlpha(inputImage);
// Build a context that's the same dimensions as the new size
CGContextRef context = CGBitmapContextCreate(NULL,
image.size.width,
image.size.height,
CGImageGetBitsPerComponent(image.CGImage),
0,
CGImageGetColorSpace(image.CGImage),
CGImageGetBitmapInfo(image.CGImage));
// Create a clipping path with rounded corners
CGContextBeginPath(context);
bit_addRoundedRectToPath(CGRectMake(borderSize, borderSize, image.size.width - borderSize * 2, image.size.height - borderSize * 2), context, cornerSize, cornerSize);
CGContextClosePath(context);
CGContextClip(context);
// Draw the image to the context; the clipping path will make anything outside the rounded rect transparent
CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage);
// Create a CGImage from the context
CGImageRef clippedImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
// Create a UIImage from the CGImage
roundedImage = [UIImage imageWithCGImage:clippedImage];
CGImageRelease(clippedImage);
}
return roundedImage;
}

View File

@ -33,13 +33,12 @@
#import <mach-o/ldsyms.h> #import <mach-o/ldsyms.h>
#import "HockeySDK.h" #import "HockeySDK.h"
#import "HockeySDKPrivate.h" #import "HockeySDKPrivate.h"
#import "BITHockeyHelper.h"
#import "BITUpdateManagerPrivate.h" #import "BITUpdateManagerPrivate.h"
#import "BITUpdateViewControllerPrivate.h" #import "BITUpdateViewControllerPrivate.h"
#import "BITAppVersionMetaInfo.h" #import "BITAppVersionMetaInfo.h"
#import "NSString+BITHockeyAdditions.h"
#import "UIImage+BITHockeyAdditions.h"
// API defines - do not change // API defines - do not change
@ -98,7 +97,7 @@
} }
- (NSString *)encodedAppIdentifier { - (NSString *)encodedAppIdentifier {
return (_appIdentifier ? [_appIdentifier bit_URLEncodedString] : [[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"] bit_URLEncodedString]); return (_appIdentifier ? bit_URLEncodedString(_appIdentifier) : bit_URLEncodedString([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]));
} }
- (NSString *)getDevicePlatform { - (NSString *)getDevicePlatform {
@ -277,7 +276,7 @@
- (void)checkUpdateAvailable { - (void)checkUpdateAvailable {
// check if there is an update available // check if there is an update available
if (self.compareVersionType == BITUpdateComparisonResultGreater) { if (self.compareVersionType == BITUpdateComparisonResultGreater) {
self.updateAvailable = ([self.newestAppVersion.version bit_versionCompare:self.currentAppVersion] == NSOrderedDescending); self.updateAvailable = (bit_versionCompare(self.newestAppVersion.version, self.currentAppVersion) == NSOrderedDescending);
} else { } else {
self.updateAvailable = ([self.newestAppVersion.version compare:self.currentAppVersion] != NSOrderedSame); self.updateAvailable = ([self.newestAppVersion.version compare:self.currentAppVersion] != NSOrderedSame);
} }
@ -558,13 +557,13 @@
CGRect frame = [visibleWindow frame]; CGRect frame = [visibleWindow frame];
self.blockingView = [[[UIView alloc] initWithFrame:frame] autorelease]; self.blockingView = [[[UIView alloc] initWithFrame:frame] autorelease];
UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:[UIImage bit_imageNamed:@"bg.png" bundle:BITHOCKEYSDK_BUNDLE]] autorelease]; UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:bit_imageNamed(@"bg.png", BITHOCKEYSDK_BUNDLE)] autorelease];
backgroundView.contentMode = UIViewContentModeScaleAspectFill; backgroundView.contentMode = UIViewContentModeScaleAspectFill;
backgroundView.frame = frame; backgroundView.frame = frame;
[self.blockingView addSubview:backgroundView]; [self.blockingView addSubview:backgroundView];
if (image != nil) { if (image != nil) {
UIImageView *imageView = [[[UIImageView alloc] initWithImage:[UIImage bit_imageNamed:image bundle:BITHOCKEYSDK_BUNDLE]] autorelease]; UIImageView *imageView = [[[UIImageView alloc] initWithImage:bit_imageNamed(image, BITHOCKEYSDK_BUNDLE)] autorelease];
imageView.contentMode = UIViewContentModeCenter; imageView.contentMode = UIViewContentModeCenter;
imageView.frame = frame; imageView.frame = frame;
[self.blockingView addSubview:imageView]; [self.blockingView addSubview:imageView];
@ -697,8 +696,8 @@
NSMutableString *parameter = [NSMutableString stringWithFormat:@"api/2/apps/%@", [self encodedAppIdentifier]]; NSMutableString *parameter = [NSMutableString stringWithFormat:@"api/2/apps/%@", [self encodedAppIdentifier]];
[parameter appendFormat:@"?format=json&authorize=yes&app_version=%@&udid=%@&sdk=%@&sdk_version=%@&uuid=%@", [parameter appendFormat:@"?format=json&authorize=yes&app_version=%@&udid=%@&sdk=%@&sdk_version=%@&uuid=%@",
[[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"] bit_URLEncodedString], bit_URLEncodedString([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]),
(_isAppStoreEnvironment ? @"appstore" : [[self deviceIdentifier] bit_URLEncodedString]), (_isAppStoreEnvironment ? @"appstore" : bit_URLEncodedString([self deviceIdentifier])),
BITHOCKEY_NAME, BITHOCKEY_NAME,
BITHOCKEY_VERSION, BITHOCKEY_VERSION,
_uuid _uuid
@ -797,8 +796,8 @@
} }
NSMutableString *parameter = [NSMutableString stringWithFormat:@"api/2/apps/%@?format=json&udid=%@&sdk=%@&sdk_version=%@&uuid=%@", NSMutableString *parameter = [NSMutableString stringWithFormat:@"api/2/apps/%@?format=json&udid=%@&sdk=%@&sdk_version=%@&uuid=%@",
[[self encodedAppIdentifier] bit_URLEncodedString], bit_URLEncodedString([self encodedAppIdentifier]),
(_isAppStoreEnvironment ? @"appstore" : [[self deviceIdentifier] bit_URLEncodedString]), (_isAppStoreEnvironment ? @"appstore" : bit_URLEncodedString([self deviceIdentifier])),
BITHOCKEY_NAME, BITHOCKEY_NAME,
BITHOCKEY_VERSION, BITHOCKEY_VERSION,
_uuid]; _uuid];
@ -806,12 +805,12 @@
// add additional statistics if user didn't disable flag // add additional statistics if user didn't disable flag
if (_sendUsageData) { if (_sendUsageData) {
[parameter appendFormat:@"&app_version=%@&os=iOS&os_version=%@&device=%@&lang=%@&first_start_at=%@&usage_time=%@", [parameter appendFormat:@"&app_version=%@&os=iOS&os_version=%@&device=%@&lang=%@&first_start_at=%@&usage_time=%@",
[[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"] bit_URLEncodedString], bit_URLEncodedString([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]),
[[[UIDevice currentDevice] systemVersion] bit_URLEncodedString], bit_URLEncodedString([[UIDevice currentDevice] systemVersion]),
[[self getDevicePlatform] bit_URLEncodedString], bit_URLEncodedString([self getDevicePlatform]),
[[[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0] bit_URLEncodedString], bit_URLEncodedString([[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]),
[[self installationDateString] bit_URLEncodedString], bit_URLEncodedString([self installationDateString]),
[[self currentUsageString] bit_URLEncodedString] bit_URLEncodedString([self currentUsageString])
]; ];
} }
@ -857,7 +856,7 @@
} }
NSString *hockeyAPIURL = [NSString stringWithFormat:@"%@api/2/apps/%@?format=plist%@", _updateURL, [self encodedAppIdentifier], extraParameter]; NSString *hockeyAPIURL = [NSString stringWithFormat:@"%@api/2/apps/%@?format=plist%@", _updateURL, [self encodedAppIdentifier], extraParameter];
NSString *iOSUpdateURL = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=%@", [hockeyAPIURL bit_URLEncodedString]]; NSString *iOSUpdateURL = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=%@", bit_URLEncodedString(hockeyAPIURL)];
BITHockeyLog(@"INFO: API Server Call: %@, calling iOS with %@", hockeyAPIURL, iOSUpdateURL); BITHockeyLog(@"INFO: API Server Call: %@, calling iOS with %@", hockeyAPIURL, iOSUpdateURL);
BOOL success = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iOSUpdateURL]]; BOOL success = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iOSUpdateURL]];
@ -1050,7 +1049,7 @@
BOOL result = NO; BOOL result = NO;
for (BITAppVersionMetaInfo *appVersion in self.appVersions) { for (BITAppVersionMetaInfo *appVersion in self.appVersions) {
if ([appVersion.version isEqualToString:self.currentAppVersion] || [appVersion.version bit_versionCompare:self.currentAppVersion] == NSOrderedAscending) { if ([appVersion.version isEqualToString:self.currentAppVersion] || bit_versionCompare(appVersion.version, self.currentAppVersion) == NSOrderedAscending) {
break; break;
} }

View File

@ -29,9 +29,8 @@
*/ */
#import <QuartzCore/QuartzCore.h> #import <QuartzCore/QuartzCore.h>
#import "NSString+BITHockeyAdditions.h" #import "BITHockeyHelper.h"
#import "BITAppVersionMetaInfo.h" #import "BITAppVersionMetaInfo.h"
#import "UIImage+BITHockeyAdditions.h"
#import "PSAppStoreHeader.h" #import "PSAppStoreHeader.h"
#import "PSWebTableViewCell.h" #import "PSWebTableViewCell.h"
#import "PSStoreButton.h" #import "PSStoreButton.h"
@ -98,7 +97,7 @@
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0); UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);
[image drawAtPoint:CGPointZero]; [image drawAtPoint:CGPointZero];
UIImage *iconGradient = [UIImage bit_imageNamed:@"IconGradient.png" bundle:BITHOCKEYSDK_BUNDLE]; UIImage *iconGradient = bit_imageNamed(@"IconGradient.png", BITHOCKEYSDK_BUNDLE);
[iconGradient drawInRect:CGRectMake(0, 0, image.size.width, image.size.height) blendMode:kCGBlendModeNormal alpha:0.5]; [iconGradient drawInRect:CGRectMake(0, 0, image.size.width, image.size.height) blendMode:kCGBlendModeNormal alpha:0.5];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
@ -155,7 +154,7 @@
[footerButton setTitle:BITHockeyLocalizedString(@"UpdateShowPreviousVersions") forState:UIControlStateNormal]; [footerButton setTitle:BITHockeyLocalizedString(@"UpdateShowPreviousVersions") forState:UIControlStateNormal];
[footerButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [footerButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[footerButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; [footerButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
[footerButton setBackgroundImage:[UIImage bit_imageNamed:@"buttonHighlight.png" bundle:BITHOCKEYSDK_BUNDLE] forState:UIControlStateHighlighted]; [footerButton setBackgroundImage:bit_imageNamed(@"buttonHighlight.png", BITHOCKEYSDK_BUNDLE) forState:UIControlStateHighlighted];
footerButton.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; footerButton.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
[footerButton addTarget:self action:@selector(showPreviousVersionAction) forControlEvents:UIControlEventTouchUpInside]; [footerButton addTarget:self action:@selector(showPreviousVersionAction) forControlEvents:UIControlEventTouchUpInside];
footerButton.frame = CGRectMake(0, kMinPreviousVersionButtonHeight-44, self.view.frame.size.width, 44); footerButton.frame = CGRectMake(0, kMinPreviousVersionButtonHeight-44, self.view.frame.size.width, 44);

View File

@ -1,34 +0,0 @@
//
// Created by Jon Crosby on 10/19/07.
// Copyright 2007 Kaboomerang LLC. All rights reserved.
// Copyright (c) 2012 HockeyApp, Bit Stadium GmbH.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import <Foundation/Foundation.h>
@interface NSString (BITHockeyAdditions)
- (NSString *)bit_URLEncodedString;
- (NSString *)bit_URLDecodedString;
- (NSComparisonResult)bit_versionCompare:(NSString *)other;
@end

View File

@ -1,72 +0,0 @@
//
// Created by Jon Crosby on 10/19/07.
// Copyright 2007 Kaboomerang LLC. All rights reserved.
// Copyright (c) 2012 HockeyApp, Bit Stadium GmbH.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import "NSString+BITHockeyAdditions.h"
@implementation NSString (BITHockeyAdditions)
- (NSString *)bit_URLEncodedString {
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)self,
NULL,
CFSTR("!*'();:@&=+$,/?%#[]"),
kCFStringEncodingUTF8);
[result autorelease];
return result;
}
- (NSString*)bit_URLDecodedString {
NSString *result = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
(CFStringRef)self,
CFSTR(""),
kCFStringEncodingUTF8);
[result autorelease];
return result;
}
- (NSComparisonResult)bit_versionCompare:(NSString *)other {
// Extract plain version number from self
NSString *plainSelf = self;
NSRange letterRange = [plainSelf rangeOfCharacterFromSet: [NSCharacterSet letterCharacterSet]];
if (letterRange.length)
plainSelf = [plainSelf substringToIndex: letterRange.location];
// Extract plain version number from other
NSString *plainOther = other;
letterRange = [plainOther rangeOfCharacterFromSet: [NSCharacterSet letterCharacterSet]];
if (letterRange.length)
plainOther = [plainOther substringToIndex: letterRange.location];
// Compare plain versions
NSComparisonResult result = [plainSelf compare:plainOther options:NSNumericSearch];
// If plain versions are equal, compare full versions
if (result == NSOrderedSame)
result = [self compare:other options:NSNumericSearch];
// Done
return result;
}
@end

View File

@ -21,7 +21,7 @@
// THE SOFTWARE. // THE SOFTWARE.
#import "PSAppStoreHeader.h" #import "PSAppStoreHeader.h"
#import "UIImage+BITHockeyAdditions.h" #import "BITHockeyHelper.h"
#import "HockeySDKPrivate.h" #import "HockeySDKPrivate.h"
@ -149,14 +149,14 @@
[iconImage_ release]; [iconImage_ release];
// scale, make borders and reflection // scale, make borders and reflection
iconImage_ = [anIconImage bit_imageToFitSize:CGSizeMake(kImageHeight, kImageHeight) honorScaleFactor:YES]; iconImage_ = bit_imageToFitSize(anIconImage, CGSizeMake(kImageHeight, kImageHeight), YES);
iconImage_ = [[iconImage_ bit_roundedCornerImage:kImageBorderRadius borderSize:0.0] retain]; iconImage_ = [bit_roundedCornerImage(iconImage_, kImageBorderRadius, 0.0) retain];
// create reflected image // create reflected image
[reflectedImage_ release]; [reflectedImage_ release];
reflectedImage_ = nil; reflectedImage_ = nil;
if (anIconImage) { if (anIconImage) {
reflectedImage_ = [[iconImage_ bit_reflectedImageWithHeight:kReflectionHeight fromAlpha:0.5 toAlpha:0.0] retain]; reflectedImage_ = [bit_reflectedImageWithHeight(iconImage_, kReflectionHeight, 0.5, 0.0) retain];
} }
[self setNeedsDisplay]; [self setNeedsDisplay];
} }

View File

@ -1,39 +0,0 @@
//
// UIImage+BITHockeyAdditions.h
//
// Created by Peter Steinberger on 10.01.11.
// Copyright (c) 2011-2012 Peter Steinberger.
// Copyright (c) 2012 HockeyApp, Bit Stadium GmbH.
// All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import <UIKit/UIKit.h>
@interface UIImage (BITHockeyAdditions)
- (UIImage *)bit_roundedCornerImage:(NSInteger)cornerSize borderSize:(NSInteger)borderSize;
- (UIImage *)bit_imageToFitSize:(CGSize)fitSize honorScaleFactor:(BOOL)honorScaleFactor;
- (UIImage *)bit_reflectedImageWithHeight:(NSUInteger)height fromAlpha:(float)fromAlpha toAlpha:(float)toAlpha;
- (id)bit_initWithContentsOfResolutionIndependentFile:(NSString *)path NS_RETURNS_RETAINED;
+ (UIImage *)bit_imageWithContentsOfResolutionIndependentFile:(NSString *)path;
+ (UIImage *)bit_imageNamed:(NSString *)imageName bundle:(NSString *)bundleName;
@end

View File

@ -31,11 +31,9 @@
1E59545715B6C41300A03429 /* BITAppVersionMetaInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45A148D7BF50015DEDC /* BITAppVersionMetaInfo.m */; }; 1E59545715B6C41300A03429 /* BITAppVersionMetaInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45A148D7BF50015DEDC /* BITAppVersionMetaInfo.m */; };
1E59545C15B6C41300A03429 /* BITCrashManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB464148D7BF50015DEDC /* BITCrashManager.m */; }; 1E59545C15B6C41300A03429 /* BITCrashManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB464148D7BF50015DEDC /* BITCrashManager.m */; };
1E59545D15B6C41300A03429 /* BITHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB466148D7BF50015DEDC /* BITHockeyManager.m */; }; 1E59545D15B6C41300A03429 /* BITHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB466148D7BF50015DEDC /* BITHockeyManager.m */; };
1E59545E15B6C41300A03429 /* NSString+BITHockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB468148D7BF50015DEDC /* NSString+BITHockeyAdditions.m */; };
1E59545F15B6C41300A03429 /* PSAppStoreHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */; }; 1E59545F15B6C41300A03429 /* PSAppStoreHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */; };
1E59546015B6C41300A03429 /* PSStoreButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46C148D7BF50015DEDC /* PSStoreButton.m */; }; 1E59546015B6C41300A03429 /* PSStoreButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46C148D7BF50015DEDC /* PSStoreButton.m */; };
1E59546115B6C41300A03429 /* PSWebTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */; }; 1E59546115B6C41300A03429 /* PSWebTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */; };
1E59546215B6C41300A03429 /* UIImage+BITHockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB470148D7BF50015DEDC /* UIImage+BITHockeyAdditions.m */; };
1E59546315B6C41300A03429 /* BITCrashReportTextFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E40BCB815A3494400BD64D9 /* BITCrashReportTextFormatter.m */; }; 1E59546315B6C41300A03429 /* BITCrashReportTextFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E40BCB815A3494400BD64D9 /* BITCrashReportTextFormatter.m */; };
1E59546615B6C41300A03429 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; }; 1E59546615B6C41300A03429 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; };
1E59546715B6C41300A03429 /* CrashReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */; }; 1E59546715B6C41300A03429 /* CrashReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */; };
@ -45,7 +43,6 @@
1E59547015B6C41300A03429 /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; }; 1E59547015B6C41300A03429 /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; };
1E59547115B6C41300A03429 /* PSStoreButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46B148D7BF50015DEDC /* PSStoreButton.h */; }; 1E59547115B6C41300A03429 /* PSStoreButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46B148D7BF50015DEDC /* PSStoreButton.h */; };
1E59547215B6C41300A03429 /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; }; 1E59547215B6C41300A03429 /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; };
1E59547315B6C41300A03429 /* UIImage+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46F148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h */; };
1E59547515B6C41300A03429 /* BITCrashManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E40BCB415A3487500BD64D9 /* BITCrashManagerDelegate.h */; settings = {ATTRIBUTES = (); }; }; 1E59547515B6C41300A03429 /* BITCrashManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E40BCB415A3487500BD64D9 /* BITCrashManagerDelegate.h */; settings = {ATTRIBUTES = (); }; };
1E59547615B6C41300A03429 /* BITCrashReportTextFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E40BCB715A3494400BD64D9 /* BITCrashReportTextFormatter.h */; }; 1E59547615B6C41300A03429 /* BITCrashReportTextFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E40BCB715A3494400BD64D9 /* BITCrashReportTextFormatter.h */; };
1E59547815B6C41300A03429 /* HockeySDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E71509A15B5C76F004E88FF /* HockeySDK.h */; settings = {ATTRIBUTES = (); }; }; 1E59547815B6C41300A03429 /* HockeySDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E71509A15B5C76F004E88FF /* HockeySDK.h */; settings = {ATTRIBUTES = (); }; };
@ -59,18 +56,15 @@
1E5954CD15B6F24A00A03429 /* BITAppVersionMetaInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45A148D7BF50015DEDC /* BITAppVersionMetaInfo.m */; }; 1E5954CD15B6F24A00A03429 /* BITAppVersionMetaInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45A148D7BF50015DEDC /* BITAppVersionMetaInfo.m */; };
1E5954D215B6F24A00A03429 /* BITCrashManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB464148D7BF50015DEDC /* BITCrashManager.m */; }; 1E5954D215B6F24A00A03429 /* BITCrashManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB464148D7BF50015DEDC /* BITCrashManager.m */; };
1E5954D315B6F24A00A03429 /* BITHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB466148D7BF50015DEDC /* BITHockeyManager.m */; }; 1E5954D315B6F24A00A03429 /* BITHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB466148D7BF50015DEDC /* BITHockeyManager.m */; };
1E5954D415B6F24A00A03429 /* NSString+BITHockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB468148D7BF50015DEDC /* NSString+BITHockeyAdditions.m */; };
1E5954D515B6F24A00A03429 /* PSAppStoreHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */; }; 1E5954D515B6F24A00A03429 /* PSAppStoreHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */; };
1E5954D615B6F24A00A03429 /* PSStoreButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46C148D7BF50015DEDC /* PSStoreButton.m */; }; 1E5954D615B6F24A00A03429 /* PSStoreButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46C148D7BF50015DEDC /* PSStoreButton.m */; };
1E5954D715B6F24A00A03429 /* PSWebTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */; }; 1E5954D715B6F24A00A03429 /* PSWebTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */; };
1E5954D815B6F24A00A03429 /* UIImage+BITHockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB470148D7BF50015DEDC /* UIImage+BITHockeyAdditions.m */; };
1E5954D915B6F24A00A03429 /* BITCrashReportTextFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E40BCB815A3494400BD64D9 /* BITCrashReportTextFormatter.m */; }; 1E5954D915B6F24A00A03429 /* BITCrashReportTextFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E40BCB815A3494400BD64D9 /* BITCrashReportTextFormatter.m */; };
1E5954DC15B6F24A00A03429 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; }; 1E5954DC15B6F24A00A03429 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; };
1E5954DD15B6F24A00A03429 /* CrashReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */; }; 1E5954DD15B6F24A00A03429 /* CrashReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */; };
1E59558D15B6FDA500A03429 /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; }; 1E59558D15B6FDA500A03429 /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; };
1E59558E15B6FDA500A03429 /* PSStoreButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46B148D7BF50015DEDC /* PSStoreButton.h */; }; 1E59558E15B6FDA500A03429 /* PSStoreButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46B148D7BF50015DEDC /* PSStoreButton.h */; };
1E59558F15B6FDA500A03429 /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; }; 1E59558F15B6FDA500A03429 /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; };
1E59559015B6FDA500A03429 /* UIImage+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46F148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h */; };
1E59559215B6FDA500A03429 /* BITAppVersionMetaInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB459148D7BF50015DEDC /* BITAppVersionMetaInfo.h */; }; 1E59559215B6FDA500A03429 /* BITAppVersionMetaInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB459148D7BF50015DEDC /* BITAppVersionMetaInfo.h */; };
1E59559415B6FDA500A03429 /* BITUpdateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB45D148D7BF50015DEDC /* BITUpdateManager.h */; settings = {ATTRIBUTES = (); }; }; 1E59559415B6FDA500A03429 /* BITUpdateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB45D148D7BF50015DEDC /* BITUpdateManager.h */; settings = {ATTRIBUTES = (); }; };
1E59559815B6FDA500A03429 /* BITCrashManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E40BCB415A3487500BD64D9 /* BITCrashManagerDelegate.h */; settings = {ATTRIBUTES = (); }; }; 1E59559815B6FDA500A03429 /* BITCrashManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E40BCB415A3487500BD64D9 /* BITCrashManagerDelegate.h */; settings = {ATTRIBUTES = (); }; };
@ -104,16 +98,11 @@
1E5955E715B751FB00A03429 /* BITUpdateViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5955E615B751FB00A03429 /* BITUpdateViewController.m */; }; 1E5955E715B751FB00A03429 /* BITUpdateViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5955E615B751FB00A03429 /* BITUpdateViewController.m */; };
1E5955E815B751FB00A03429 /* BITUpdateViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5955E615B751FB00A03429 /* BITUpdateViewController.m */; }; 1E5955E815B751FB00A03429 /* BITUpdateViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5955E615B751FB00A03429 /* BITUpdateViewController.m */; };
1E5955E915B751FB00A03429 /* BITUpdateViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5955E615B751FB00A03429 /* BITUpdateViewController.m */; }; 1E5955E915B751FB00A03429 /* BITUpdateViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5955E615B751FB00A03429 /* BITUpdateViewController.m */; };
1E5955EB15B7538B00A03429 /* NSString+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EA15B7538B00A03429 /* NSString+BITHockeyAdditions.h */; };
1E5955EC15B7538B00A03429 /* NSString+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EA15B7538B00A03429 /* NSString+BITHockeyAdditions.h */; };
1E5955ED15B7538B00A03429 /* NSString+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EA15B7538B00A03429 /* NSString+BITHockeyAdditions.h */; };
1E5955EF15B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; }; 1E5955EF15B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; };
1E5955F015B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; }; 1E5955F015B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; };
1E5955F115B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; }; 1E5955F115B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; };
1E5955F215B77F5100A03429 /* NSString+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EA15B7538B00A03429 /* NSString+BITHockeyAdditions.h */; };
1E5955F315B77F5600A03429 /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; }; 1E5955F315B77F5600A03429 /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; };
1E5955F415B77F5E00A03429 /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; }; 1E5955F415B77F5E00A03429 /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; };
1E5955F515B77F6000A03429 /* UIImage+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46F148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h */; };
1E5955F615B77F6500A03429 /* HockeySDKPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955A015B70F6900A03429 /* HockeySDKPrivate.h */; }; 1E5955F615B77F6500A03429 /* HockeySDKPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955A015B70F6900A03429 /* HockeySDKPrivate.h */; };
1E5955F715B77F7600A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1E5955F715B77F7600A03429 /* BITUpdateManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
1E5955F815B77F7C00A03429 /* BITUpdateViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955E215B751ED00A03429 /* BITUpdateViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1E5955F815B77F7C00A03429 /* BITUpdateViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955E215B751ED00A03429 /* BITUpdateViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -123,6 +112,12 @@
1E5955FD15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955FA15B7877A00A03429 /* BITHockeyManagerDelegate.h */; }; 1E5955FD15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955FA15B7877A00A03429 /* BITHockeyManagerDelegate.h */; };
1E5955FE15B787D600A03429 /* BITHockeyManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955FA15B7877A00A03429 /* BITHockeyManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1E5955FE15B787D600A03429 /* BITHockeyManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5955FA15B7877A00A03429 /* BITHockeyManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
1E71509B15B5C76F004E88FF /* HockeySDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E71509A15B5C76F004E88FF /* HockeySDK.h */; settings = {ATTRIBUTES = (); }; }; 1E71509B15B5C76F004E88FF /* HockeySDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E71509A15B5C76F004E88FF /* HockeySDK.h */; settings = {ATTRIBUTES = (); }; };
1EB6046D15EF6B3200F69880 /* BITHockeyHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB6046B15EF6B3200F69880 /* BITHockeyHelper.h */; };
1EB6046E15EF6B3200F69880 /* BITHockeyHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB6046B15EF6B3200F69880 /* BITHockeyHelper.h */; };
1EB6046F15EF6B3200F69880 /* BITHockeyHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB6046B15EF6B3200F69880 /* BITHockeyHelper.h */; };
1EB6047015EF6B3200F69880 /* BITHockeyHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB6046C15EF6B3200F69880 /* BITHockeyHelper.m */; };
1EB6047115EF6B3200F69880 /* BITHockeyHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB6046C15EF6B3200F69880 /* BITHockeyHelper.m */; };
1EB6047215EF6B3200F69880 /* BITHockeyHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB6046C15EF6B3200F69880 /* BITHockeyHelper.m */; };
E400561E148D79B500EB22B9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; }; E400561E148D79B500EB22B9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; };
E41EB471148D7BF50015DEDC /* BITAppVersionMetaInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB459148D7BF50015DEDC /* BITAppVersionMetaInfo.h */; }; E41EB471148D7BF50015DEDC /* BITAppVersionMetaInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB459148D7BF50015DEDC /* BITAppVersionMetaInfo.h */; };
E41EB472148D7BF50015DEDC /* BITAppVersionMetaInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45A148D7BF50015DEDC /* BITAppVersionMetaInfo.m */; }; E41EB472148D7BF50015DEDC /* BITAppVersionMetaInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45A148D7BF50015DEDC /* BITAppVersionMetaInfo.m */; };
@ -130,15 +125,12 @@
E41EB47C148D7BF50015DEDC /* BITCrashManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB464148D7BF50015DEDC /* BITCrashManager.m */; }; E41EB47C148D7BF50015DEDC /* BITCrashManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB464148D7BF50015DEDC /* BITCrashManager.m */; };
E41EB47D148D7BF50015DEDC /* BITHockeyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB465148D7BF50015DEDC /* BITHockeyManager.h */; }; E41EB47D148D7BF50015DEDC /* BITHockeyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB465148D7BF50015DEDC /* BITHockeyManager.h */; };
E41EB47E148D7BF50015DEDC /* BITHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB466148D7BF50015DEDC /* BITHockeyManager.m */; }; E41EB47E148D7BF50015DEDC /* BITHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB466148D7BF50015DEDC /* BITHockeyManager.m */; };
E41EB480148D7BF50015DEDC /* NSString+BITHockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB468148D7BF50015DEDC /* NSString+BITHockeyAdditions.m */; };
E41EB481148D7BF50015DEDC /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; }; E41EB481148D7BF50015DEDC /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; };
E41EB482148D7BF50015DEDC /* PSAppStoreHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */; }; E41EB482148D7BF50015DEDC /* PSAppStoreHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */; };
E41EB483148D7BF50015DEDC /* PSStoreButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46B148D7BF50015DEDC /* PSStoreButton.h */; }; E41EB483148D7BF50015DEDC /* PSStoreButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46B148D7BF50015DEDC /* PSStoreButton.h */; };
E41EB484148D7BF50015DEDC /* PSStoreButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46C148D7BF50015DEDC /* PSStoreButton.m */; }; E41EB484148D7BF50015DEDC /* PSStoreButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46C148D7BF50015DEDC /* PSStoreButton.m */; };
E41EB485148D7BF50015DEDC /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; }; E41EB485148D7BF50015DEDC /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; };
E41EB486148D7BF50015DEDC /* PSWebTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */; }; E41EB486148D7BF50015DEDC /* PSWebTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */; };
E41EB487148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46F148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h */; };
E41EB488148D7BF50015DEDC /* UIImage+BITHockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB470148D7BF50015DEDC /* UIImage+BITHockeyAdditions.m */; };
E41EB48C148D7C4E0015DEDC /* CrashReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */; }; E41EB48C148D7C4E0015DEDC /* CrashReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@ -213,11 +205,12 @@
1E5955D515B72ED500A03429 /* BITUpdateManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = BITUpdateManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 1E5955D515B72ED500A03429 /* BITUpdateManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = BITUpdateManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
1E5955E215B751ED00A03429 /* BITUpdateViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITUpdateViewController.h; sourceTree = "<group>"; }; 1E5955E215B751ED00A03429 /* BITUpdateViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITUpdateViewController.h; sourceTree = "<group>"; };
1E5955E615B751FB00A03429 /* BITUpdateViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BITUpdateViewController.m; sourceTree = "<group>"; }; 1E5955E615B751FB00A03429 /* BITUpdateViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BITUpdateViewController.m; sourceTree = "<group>"; };
1E5955EA15B7538B00A03429 /* NSString+BITHockeyAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+BITHockeyAdditions.h"; sourceTree = "<group>"; };
1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITUpdateManagerDelegate.h; sourceTree = "<group>"; }; 1E5955EE15B7752200A03429 /* BITUpdateManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITUpdateManagerDelegate.h; sourceTree = "<group>"; };
1E5955FA15B7877A00A03429 /* BITHockeyManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITHockeyManagerDelegate.h; sourceTree = "<group>"; }; 1E5955FA15B7877A00A03429 /* BITHockeyManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITHockeyManagerDelegate.h; sourceTree = "<group>"; };
1E66CA9115D4100500F35BED /* buildnumber.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = buildnumber.xcconfig; sourceTree = "<group>"; }; 1E66CA9115D4100500F35BED /* buildnumber.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = buildnumber.xcconfig; sourceTree = "<group>"; };
1E71509A15B5C76F004E88FF /* HockeySDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HockeySDK.h; sourceTree = "<group>"; }; 1E71509A15B5C76F004E88FF /* HockeySDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HockeySDK.h; sourceTree = "<group>"; };
1EB6046B15EF6B3200F69880 /* BITHockeyHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITHockeyHelper.h; sourceTree = "<group>"; };
1EB6046C15EF6B3200F69880 /* BITHockeyHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BITHockeyHelper.m; sourceTree = "<group>"; };
1EDA60CF15C2C1450032D10B /* HockeySDK-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HockeySDK-Info.plist"; sourceTree = "<group>"; }; 1EDA60CF15C2C1450032D10B /* HockeySDK-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HockeySDK-Info.plist"; sourceTree = "<group>"; };
E400561A148D79B500EB22B9 /* libHockeySDK-iphoneos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libHockeySDK-iphoneos.a"; sourceTree = BUILT_PRODUCTS_DIR; }; E400561A148D79B500EB22B9 /* libHockeySDK-iphoneos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libHockeySDK-iphoneos.a"; sourceTree = BUILT_PRODUCTS_DIR; };
E400561D148D79B500EB22B9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; E400561D148D79B500EB22B9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@ -227,15 +220,12 @@
E41EB464148D7BF50015DEDC /* BITCrashManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = BITCrashManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; E41EB464148D7BF50015DEDC /* BITCrashManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = BITCrashManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
E41EB465148D7BF50015DEDC /* BITHockeyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITHockeyManager.h; sourceTree = "<group>"; }; E41EB465148D7BF50015DEDC /* BITHockeyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BITHockeyManager.h; sourceTree = "<group>"; };
E41EB466148D7BF50015DEDC /* BITHockeyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BITHockeyManager.m; sourceTree = "<group>"; }; E41EB466148D7BF50015DEDC /* BITHockeyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BITHockeyManager.m; sourceTree = "<group>"; };
E41EB468148D7BF50015DEDC /* NSString+BITHockeyAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+BITHockeyAdditions.m"; sourceTree = "<group>"; };
E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSAppStoreHeader.h; sourceTree = "<group>"; }; E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSAppStoreHeader.h; sourceTree = "<group>"; };
E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSAppStoreHeader.m; sourceTree = "<group>"; }; E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSAppStoreHeader.m; sourceTree = "<group>"; };
E41EB46B148D7BF50015DEDC /* PSStoreButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSStoreButton.h; sourceTree = "<group>"; }; E41EB46B148D7BF50015DEDC /* PSStoreButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSStoreButton.h; sourceTree = "<group>"; };
E41EB46C148D7BF50015DEDC /* PSStoreButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSStoreButton.m; sourceTree = "<group>"; }; E41EB46C148D7BF50015DEDC /* PSStoreButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSStoreButton.m; sourceTree = "<group>"; };
E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSWebTableViewCell.h; sourceTree = "<group>"; }; E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSWebTableViewCell.h; sourceTree = "<group>"; };
E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSWebTableViewCell.m; sourceTree = "<group>"; }; E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSWebTableViewCell.m; sourceTree = "<group>"; };
E41EB46F148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+BITHockeyAdditions.h"; sourceTree = "<group>"; };
E41EB470148D7BF50015DEDC /* UIImage+BITHockeyAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+BITHockeyAdditions.m"; sourceTree = "<group>"; };
E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CrashReporter.framework; path = ../Vendor/CrashReporter.framework; sourceTree = "<group>"; }; E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CrashReporter.framework; path = ../Vendor/CrashReporter.framework; sourceTree = "<group>"; };
E4E7335A148D7A5A00763A39 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE.txt; path = ../LICENSE.txt; sourceTree = "<group>"; }; E4E7335A148D7A5A00763A39 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE.txt; path = ../LICENSE.txt; sourceTree = "<group>"; };
E4E7335B148D7A5A00763A39 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; name = README.md; path = ../README.md; sourceTree = "<group>"; }; E4E7335B148D7A5A00763A39 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; name = README.md; path = ../README.md; sourceTree = "<group>"; };
@ -396,16 +386,14 @@
E41EB48A148D7C150015DEDC /* Helper */ = { E41EB48A148D7C150015DEDC /* Helper */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
1E5955EA15B7538B00A03429 /* NSString+BITHockeyAdditions.h */,
E41EB468148D7BF50015DEDC /* NSString+BITHockeyAdditions.m */,
E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */, E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */,
E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */, E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */,
E41EB46B148D7BF50015DEDC /* PSStoreButton.h */, E41EB46B148D7BF50015DEDC /* PSStoreButton.h */,
E41EB46C148D7BF50015DEDC /* PSStoreButton.m */, E41EB46C148D7BF50015DEDC /* PSStoreButton.m */,
E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */, E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */,
E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */, E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */,
E41EB46F148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h */, 1EB6046B15EF6B3200F69880 /* BITHockeyHelper.h */,
E41EB470148D7BF50015DEDC /* UIImage+BITHockeyAdditions.m */, 1EB6046C15EF6B3200F69880 /* BITHockeyHelper.m */,
); );
name = Helper; name = Helper;
sourceTree = "<group>"; sourceTree = "<group>";
@ -428,12 +416,10 @@
1E5955F615B77F6500A03429 /* HockeySDKPrivate.h in Headers */, 1E5955F615B77F6500A03429 /* HockeySDKPrivate.h in Headers */,
1E01118115BB6311007002AC /* BITUpdateManagerPrivate.h in Headers */, 1E01118115BB6311007002AC /* BITUpdateManagerPrivate.h in Headers */,
1E01118215BB6314007002AC /* BITCrashManagerPrivate.h in Headers */, 1E01118215BB6314007002AC /* BITCrashManagerPrivate.h in Headers */,
1E5955F215B77F5100A03429 /* NSString+BITHockeyAdditions.h in Headers */,
1E01118D15BB83FB007002AC /* BITUpdateViewControllerPrivate.h in Headers */, 1E01118D15BB83FB007002AC /* BITUpdateViewControllerPrivate.h in Headers */,
1E5955F315B77F5600A03429 /* PSAppStoreHeader.h in Headers */, 1E5955F315B77F5600A03429 /* PSAppStoreHeader.h in Headers */,
1E5954B615B6E17700A03429 /* PSStoreButton.h in Headers */, 1E5954B615B6E17700A03429 /* PSStoreButton.h in Headers */,
1E5955F415B77F5E00A03429 /* PSWebTableViewCell.h in Headers */, 1E5955F415B77F5E00A03429 /* PSWebTableViewCell.h in Headers */,
1E5955F515B77F6000A03429 /* UIImage+BITHockeyAdditions.h in Headers */,
1E5954B815B6E19C00A03429 /* BITAppVersionMetaInfo.h in Headers */, 1E5954B815B6E19C00A03429 /* BITAppVersionMetaInfo.h in Headers */,
1E59548715B6C51100A03429 /* BITCrashReportTextFormatter.h in Headers */, 1E59548715B6C51100A03429 /* BITCrashReportTextFormatter.h in Headers */,
); );
@ -451,14 +437,13 @@
1E59547015B6C41300A03429 /* PSAppStoreHeader.h in Headers */, 1E59547015B6C41300A03429 /* PSAppStoreHeader.h in Headers */,
1E59547115B6C41300A03429 /* PSStoreButton.h in Headers */, 1E59547115B6C41300A03429 /* PSStoreButton.h in Headers */,
1E59547215B6C41300A03429 /* PSWebTableViewCell.h in Headers */, 1E59547215B6C41300A03429 /* PSWebTableViewCell.h in Headers */,
1E59547315B6C41300A03429 /* UIImage+BITHockeyAdditions.h in Headers */,
1E59547615B6C41300A03429 /* BITCrashReportTextFormatter.h in Headers */, 1E59547615B6C41300A03429 /* BITCrashReportTextFormatter.h in Headers */,
1E5955A215B70F6900A03429 /* HockeySDKPrivate.h in Headers */, 1E5955A215B70F6900A03429 /* HockeySDKPrivate.h in Headers */,
1E5955D315B72E5400A03429 /* BITCrashManager.h in Headers */, 1E5955D315B72E5400A03429 /* BITCrashManager.h in Headers */,
1E5955E415B751EE00A03429 /* BITUpdateViewController.h in Headers */, 1E5955E415B751EE00A03429 /* BITUpdateViewController.h in Headers */,
1E5955EC15B7538B00A03429 /* NSString+BITHockeyAdditions.h in Headers */,
1E5955F015B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */, 1E5955F015B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */,
1E5955FC15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */, 1E5955FC15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */,
1EB6046E15EF6B3200F69880 /* BITHockeyHelper.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -473,15 +458,14 @@
1E59558E15B6FDA500A03429 /* PSStoreButton.h in Headers */, 1E59558E15B6FDA500A03429 /* PSStoreButton.h in Headers */,
1E59558F15B6FDA500A03429 /* PSWebTableViewCell.h in Headers */, 1E59558F15B6FDA500A03429 /* PSWebTableViewCell.h in Headers */,
1E59559B15B6FDA500A03429 /* HockeySDK.h in Headers */, 1E59559B15B6FDA500A03429 /* HockeySDK.h in Headers */,
1E59559015B6FDA500A03429 /* UIImage+BITHockeyAdditions.h in Headers */,
1E59559215B6FDA500A03429 /* BITAppVersionMetaInfo.h in Headers */, 1E59559215B6FDA500A03429 /* BITAppVersionMetaInfo.h in Headers */,
1E59559915B6FDA500A03429 /* BITCrashReportTextFormatter.h in Headers */, 1E59559915B6FDA500A03429 /* BITCrashReportTextFormatter.h in Headers */,
1E5955A315B70F6900A03429 /* HockeySDKPrivate.h in Headers */, 1E5955A315B70F6900A03429 /* HockeySDKPrivate.h in Headers */,
1E5955D415B72E5400A03429 /* BITCrashManager.h in Headers */, 1E5955D415B72E5400A03429 /* BITCrashManager.h in Headers */,
1E5955E515B751EE00A03429 /* BITUpdateViewController.h in Headers */, 1E5955E515B751EE00A03429 /* BITUpdateViewController.h in Headers */,
1E5955ED15B7538B00A03429 /* NSString+BITHockeyAdditions.h in Headers */,
1E5955F115B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */, 1E5955F115B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */,
1E5955FD15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */, 1E5955FD15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */,
1EB6046F15EF6B3200F69880 /* BITHockeyHelper.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -497,14 +481,13 @@
E41EB481148D7BF50015DEDC /* PSAppStoreHeader.h in Headers */, E41EB481148D7BF50015DEDC /* PSAppStoreHeader.h in Headers */,
E41EB483148D7BF50015DEDC /* PSStoreButton.h in Headers */, E41EB483148D7BF50015DEDC /* PSStoreButton.h in Headers */,
E41EB485148D7BF50015DEDC /* PSWebTableViewCell.h in Headers */, E41EB485148D7BF50015DEDC /* PSWebTableViewCell.h in Headers */,
E41EB487148D7BF50015DEDC /* UIImage+BITHockeyAdditions.h in Headers */,
1E40BCB915A3494400BD64D9 /* BITCrashReportTextFormatter.h in Headers */, 1E40BCB915A3494400BD64D9 /* BITCrashReportTextFormatter.h in Headers */,
1E5955A115B70F6900A03429 /* HockeySDKPrivate.h in Headers */, 1E5955A115B70F6900A03429 /* HockeySDKPrivate.h in Headers */,
1E5955D215B72E5400A03429 /* BITCrashManager.h in Headers */, 1E5955D215B72E5400A03429 /* BITCrashManager.h in Headers */,
1E5955E315B751EE00A03429 /* BITUpdateViewController.h in Headers */, 1E5955E315B751EE00A03429 /* BITUpdateViewController.h in Headers */,
1E5955EB15B7538B00A03429 /* NSString+BITHockeyAdditions.h in Headers */,
1E5955EF15B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */, 1E5955EF15B7752300A03429 /* BITUpdateManagerDelegate.h in Headers */,
1E5955FB15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */, 1E5955FB15B7877B00A03429 /* BITHockeyManagerDelegate.h in Headers */,
1EB6046D15EF6B3200F69880 /* BITHockeyHelper.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -719,15 +702,14 @@
1E59545715B6C41300A03429 /* BITAppVersionMetaInfo.m in Sources */, 1E59545715B6C41300A03429 /* BITAppVersionMetaInfo.m in Sources */,
1E59545C15B6C41300A03429 /* BITCrashManager.m in Sources */, 1E59545C15B6C41300A03429 /* BITCrashManager.m in Sources */,
1E59545D15B6C41300A03429 /* BITHockeyManager.m in Sources */, 1E59545D15B6C41300A03429 /* BITHockeyManager.m in Sources */,
1E59545E15B6C41300A03429 /* NSString+BITHockeyAdditions.m in Sources */,
1E59545F15B6C41300A03429 /* PSAppStoreHeader.m in Sources */, 1E59545F15B6C41300A03429 /* PSAppStoreHeader.m in Sources */,
1E59546015B6C41300A03429 /* PSStoreButton.m in Sources */, 1E59546015B6C41300A03429 /* PSStoreButton.m in Sources */,
1E59546115B6C41300A03429 /* PSWebTableViewCell.m in Sources */, 1E59546115B6C41300A03429 /* PSWebTableViewCell.m in Sources */,
1E59546215B6C41300A03429 /* UIImage+BITHockeyAdditions.m in Sources */,
1E59546315B6C41300A03429 /* BITCrashReportTextFormatter.m in Sources */, 1E59546315B6C41300A03429 /* BITCrashReportTextFormatter.m in Sources */,
1E59559E15B70F4D00A03429 /* HockeySDKPrivate.m in Sources */, 1E59559E15B70F4D00A03429 /* HockeySDKPrivate.m in Sources */,
1E5955D715B72ED500A03429 /* BITUpdateManager.m in Sources */, 1E5955D715B72ED500A03429 /* BITUpdateManager.m in Sources */,
1E5955E815B751FB00A03429 /* BITUpdateViewController.m in Sources */, 1E5955E815B751FB00A03429 /* BITUpdateViewController.m in Sources */,
1EB6047115EF6B3200F69880 /* BITHockeyHelper.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -738,15 +720,14 @@
1E5954CD15B6F24A00A03429 /* BITAppVersionMetaInfo.m in Sources */, 1E5954CD15B6F24A00A03429 /* BITAppVersionMetaInfo.m in Sources */,
1E5954D215B6F24A00A03429 /* BITCrashManager.m in Sources */, 1E5954D215B6F24A00A03429 /* BITCrashManager.m in Sources */,
1E5954D315B6F24A00A03429 /* BITHockeyManager.m in Sources */, 1E5954D315B6F24A00A03429 /* BITHockeyManager.m in Sources */,
1E5954D415B6F24A00A03429 /* NSString+BITHockeyAdditions.m in Sources */,
1E5954D515B6F24A00A03429 /* PSAppStoreHeader.m in Sources */, 1E5954D515B6F24A00A03429 /* PSAppStoreHeader.m in Sources */,
1E5954D615B6F24A00A03429 /* PSStoreButton.m in Sources */, 1E5954D615B6F24A00A03429 /* PSStoreButton.m in Sources */,
1E5954D715B6F24A00A03429 /* PSWebTableViewCell.m in Sources */, 1E5954D715B6F24A00A03429 /* PSWebTableViewCell.m in Sources */,
1E5954D815B6F24A00A03429 /* UIImage+BITHockeyAdditions.m in Sources */,
1E5954D915B6F24A00A03429 /* BITCrashReportTextFormatter.m in Sources */, 1E5954D915B6F24A00A03429 /* BITCrashReportTextFormatter.m in Sources */,
1E59559F15B70F4D00A03429 /* HockeySDKPrivate.m in Sources */, 1E59559F15B70F4D00A03429 /* HockeySDKPrivate.m in Sources */,
1E5955D815B72ED500A03429 /* BITUpdateManager.m in Sources */, 1E5955D815B72ED500A03429 /* BITUpdateManager.m in Sources */,
1E5955E915B751FB00A03429 /* BITUpdateViewController.m in Sources */, 1E5955E915B751FB00A03429 /* BITUpdateViewController.m in Sources */,
1EB6047215EF6B3200F69880 /* BITHockeyHelper.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -764,15 +745,14 @@
E41EB472148D7BF50015DEDC /* BITAppVersionMetaInfo.m in Sources */, E41EB472148D7BF50015DEDC /* BITAppVersionMetaInfo.m in Sources */,
E41EB47C148D7BF50015DEDC /* BITCrashManager.m in Sources */, E41EB47C148D7BF50015DEDC /* BITCrashManager.m in Sources */,
E41EB47E148D7BF50015DEDC /* BITHockeyManager.m in Sources */, E41EB47E148D7BF50015DEDC /* BITHockeyManager.m in Sources */,
E41EB480148D7BF50015DEDC /* NSString+BITHockeyAdditions.m in Sources */,
E41EB482148D7BF50015DEDC /* PSAppStoreHeader.m in Sources */, E41EB482148D7BF50015DEDC /* PSAppStoreHeader.m in Sources */,
E41EB484148D7BF50015DEDC /* PSStoreButton.m in Sources */, E41EB484148D7BF50015DEDC /* PSStoreButton.m in Sources */,
E41EB486148D7BF50015DEDC /* PSWebTableViewCell.m in Sources */, E41EB486148D7BF50015DEDC /* PSWebTableViewCell.m in Sources */,
E41EB488148D7BF50015DEDC /* UIImage+BITHockeyAdditions.m in Sources */,
1E40BCBA15A3494400BD64D9 /* BITCrashReportTextFormatter.m in Sources */, 1E40BCBA15A3494400BD64D9 /* BITCrashReportTextFormatter.m in Sources */,
1E59559D15B70F4D00A03429 /* HockeySDKPrivate.m in Sources */, 1E59559D15B70F4D00A03429 /* HockeySDKPrivate.m in Sources */,
1E5955D615B72ED500A03429 /* BITUpdateManager.m in Sources */, 1E5955D615B72ED500A03429 /* BITUpdateManager.m in Sources */,
1E5955E715B751FB00A03429 /* BITUpdateViewController.m in Sources */, 1E5955E715B751FB00A03429 /* BITUpdateViewController.m in Sources */,
1EB6047015EF6B3200F69880 /* BITHockeyHelper.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };