Add tvOS example app

This commit is contained in:
Felix Schulze 2015-11-17 09:42:08 +01:00
parent 24dc55b6a3
commit 2de304ec36
30 changed files with 565 additions and 134 deletions

View File

@ -7,14 +7,21 @@
objects = {
/* Begin PBXBuildFile section */
2A1DDC8D1BFB1C5D00F7722A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED30B1528C4840005C6FA /* main.m */; };
2A1DDC8F1BFB1DF600F7722A /* ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A1DDC8E1BFB1DF600F7722A /* ViewController.xib */; };
2A8A9A7E1BFA59F7002944B4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2A8A9A7D1BFA59F7002944B4 /* Assets.xcassets */; };
2A8A9A851BFA5AFF002944B4 /* ViewController~tv.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A8A9A841BFA5AFF002944B4 /* ViewController~tv.xib */; };
2A8A9A861BFA5B04002944B4 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED3121528C4840005C6FA /* ViewController.m */; };
2A8A9A871BFA5B6A002944B4 /* FSOpenSSL.m in Sources */ = {isa = PBXBuildFile; fileRef = D1E97EE2A904D58DAE4231E2 /* FSOpenSSL.m */; };
2A8A9A8A1BFA5B85002944B4 /* libcrypto-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A8A9A881BFA5B85002944B4 /* libcrypto-tvOS.a */; };
2A8A9A8B1BFA5B85002944B4 /* libssl-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A8A9A891BFA5B85002944B4 /* libssl-tvOS.a */; };
2A8A9A8D1BFA7B79002944B4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED30F1528C4840005C6FA /* AppDelegate.m */; };
533ED3001528C4840005C6FA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED2FF1528C4840005C6FA /* UIKit.framework */; };
533ED3021528C4840005C6FA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED3011528C4840005C6FA /* Foundation.framework */; };
533ED3041528C4840005C6FA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED3031528C4840005C6FA /* CoreGraphics.framework */; };
533ED30A1528C4840005C6FA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3081528C4840005C6FA /* InfoPlist.strings */; };
533ED30C1528C4840005C6FA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED30B1528C4840005C6FA /* main.m */; };
533ED3101528C4840005C6FA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED30F1528C4840005C6FA /* AppDelegate.m */; };
533ED3131528C4840005C6FA /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED3121528C4840005C6FA /* ViewController.m */; };
533ED3161528C4840005C6FA /* ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3141528C4840005C6FA /* ViewController.xib */; };
533ED32C1528C53B0005C6FA /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED32A1528C53B0005C6FA /* libcrypto.a */; };
533ED32D1528C53B0005C6FA /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED32B1528C53B0005C6FA /* libssl.a */; };
534FB2AE180975D700B5F868 /* Icons.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 534FB2AD180975D700B5F868 /* Icons.xcassets */; };
@ -37,19 +44,24 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
2A1DDC8E1BFB1DF600F7722A /* ViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ViewController.xib; sourceTree = "<group>"; };
2A8A9A6F1BFA59F7002944B4 /* OpenSSL-for-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "OpenSSL-for-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2A8A9A7D1BFA59F7002944B4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
2A8A9A7F1BFA59F7002944B4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
2A8A9A841BFA5AFF002944B4 /* ViewController~tv.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ViewController~tv.xib"; sourceTree = "<group>"; };
2A8A9A881BFA5B85002944B4 /* libcrypto-tvOS.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libcrypto-tvOS.a"; path = "lib/libcrypto-tvOS.a"; sourceTree = "<group>"; };
2A8A9A891BFA5B85002944B4 /* libssl-tvOS.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libssl-tvOS.a"; path = "lib/libssl-tvOS.a"; sourceTree = "<group>"; };
533ED2FB1528C4840005C6FA /* OpenSSL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenSSL.app; sourceTree = BUILT_PRODUCTS_DIR; };
533ED2FF1528C4840005C6FA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
533ED3011528C4840005C6FA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
533ED3031528C4840005C6FA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
533ED3071528C4840005C6FA /* OpenSSL-for-iOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OpenSSL-for-iOS-Info.plist"; sourceTree = "<group>"; };
533ED3091528C4840005C6FA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
533ED30B1528C4840005C6FA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
533ED30D1528C4840005C6FA /* OpenSSL-for-iOS-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OpenSSL-for-iOS-Prefix.pch"; sourceTree = "<group>"; };
533ED30E1528C4840005C6FA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
533ED30F1528C4840005C6FA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
533ED3111528C4840005C6FA /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
533ED3121528C4840005C6FA /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
533ED3151528C4840005C6FA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController.xib; sourceTree = "<group>"; };
533ED32A1528C53B0005C6FA /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = lib/libcrypto.a; sourceTree = "<group>"; };
533ED32B1528C53B0005C6FA /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = lib/libssl.a; sourceTree = "<group>"; };
534FB2AD180975D700B5F868 /* Icons.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Icons.xcassets; sourceTree = "<group>"; };
@ -67,6 +79,15 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
2A8A9A6C1BFA59F7002944B4 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2A8A9A8B1BFA5B85002944B4 /* libssl-tvOS.a in Frameworks */,
2A8A9A8A1BFA5B85002944B4 /* libcrypto-tvOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
533ED2F81528C4840005C6FA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@ -92,12 +113,22 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
2A8A9A701BFA59F7002944B4 /* OpenSSL-for-tvOS */ = {
isa = PBXGroup;
children = (
2A8A9A7D1BFA59F7002944B4 /* Assets.xcassets */,
2A8A9A7F1BFA59F7002944B4 /* Info.plist */,
);
path = "OpenSSL-for-tvOS";
sourceTree = "<group>";
};
533ED2F01528C4840005C6FA = {
isa = PBXGroup;
children = (
FD5896FC1B2F1FF900F3E5B5 /* README.md */,
533ED3051528C4840005C6FA /* OpenSSL-for-iOS */,
53572A50183AAFFE00B21832 /* OpenSSL-for-iOS_Tests */,
2A8A9A701BFA59F7002944B4 /* OpenSSL-for-tvOS */,
FD5896FD1B2F1FFC00F3E5B5 /* Scripts */,
533ED2FE1528C4840005C6FA /* Frameworks */,
533ED2FC1528C4840005C6FA /* Products */,
@ -109,6 +140,7 @@
children = (
533ED2FB1528C4840005C6FA /* OpenSSL.app */,
53572A4B183AAFFE00B21832 /* OpenSSL-for-iOS_Tests.xctest */,
2A8A9A6F1BFA59F7002944B4 /* OpenSSL-for-tvOS.app */,
);
name = Products;
sourceTree = "<group>";
@ -116,6 +148,8 @@
533ED2FE1528C4840005C6FA /* Frameworks */ = {
isa = PBXGroup;
children = (
2A8A9A881BFA5B85002944B4 /* libcrypto-tvOS.a */,
2A8A9A891BFA5B85002944B4 /* libssl-tvOS.a */,
533ED32A1528C53B0005C6FA /* libcrypto.a */,
533ED32B1528C53B0005C6FA /* libssl.a */,
533ED2FF1528C4840005C6FA /* UIKit.framework */,
@ -133,7 +167,8 @@
533ED30F1528C4840005C6FA /* AppDelegate.m */,
533ED3111528C4840005C6FA /* ViewController.h */,
533ED3121528C4840005C6FA /* ViewController.m */,
533ED3141528C4840005C6FA /* ViewController.xib */,
2A1DDC8E1BFB1DF600F7722A /* ViewController.xib */,
2A8A9A841BFA5AFF002944B4 /* ViewController~tv.xib */,
533ED3061528C4840005C6FA /* Supporting Files */,
D1E97EE2A904D58DAE4231E2 /* FSOpenSSL.m */,
D1E979D803ACC127411934DC /* FSOpenSSL.h */,
@ -146,7 +181,6 @@
isa = PBXGroup;
children = (
533ED3071528C4840005C6FA /* OpenSSL-for-iOS-Info.plist */,
533ED3081528C4840005C6FA /* InfoPlist.strings */,
533ED30B1528C4840005C6FA /* main.m */,
533ED30D1528C4840005C6FA /* OpenSSL-for-iOS-Prefix.pch */,
);
@ -184,6 +218,23 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
2A8A9A6E1BFA59F7002944B4 /* OpenSSL-for-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2A8A9A821BFA59F7002944B4 /* Build configuration list for PBXNativeTarget "OpenSSL-for-tvOS" */;
buildPhases = (
2A8A9A6B1BFA59F7002944B4 /* Sources */,
2A8A9A6C1BFA59F7002944B4 /* Frameworks */,
2A8A9A6D1BFA59F7002944B4 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "OpenSSL-for-tvOS";
productName = "OpenSSL-for-tvOS";
productReference = 2A8A9A6F1BFA59F7002944B4 /* OpenSSL-for-tvOS.app */;
productType = "com.apple.product-type.application";
};
533ED2FA1528C4840005C6FA /* OpenSSL-for-iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 533ED31C1528C4840005C6FA /* Build configuration list for PBXNativeTarget "OpenSSL-for-iOS" */;
@ -229,6 +280,9 @@
LastUpgradeCheck = 0710;
ORGANIZATIONNAME = Immobilienscout24;
TargetAttributes = {
2A8A9A6E1BFA59F7002944B4 = {
CreatedOnToolsVersion = 7.1.1;
};
53572A4A183AAFFE00B21832 = {
TestTargetID = 533ED2FA1528C4840005C6FA;
};
@ -240,6 +294,7 @@
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 533ED2F01528C4840005C6FA;
productRefGroup = 533ED2FC1528C4840005C6FA /* Products */;
@ -248,17 +303,26 @@
targets = (
533ED2FA1528C4840005C6FA /* OpenSSL-for-iOS */,
53572A4A183AAFFE00B21832 /* OpenSSL-for-iOS_Tests */,
2A8A9A6E1BFA59F7002944B4 /* OpenSSL-for-tvOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
2A8A9A6D1BFA59F7002944B4 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2A8A9A851BFA5AFF002944B4 /* ViewController~tv.xib in Resources */,
2A8A9A7E1BFA59F7002944B4 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
533ED2F91528C4840005C6FA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
533ED30A1528C4840005C6FA /* InfoPlist.strings in Resources */,
533ED3161528C4840005C6FA /* ViewController.xib in Resources */,
2A1DDC8F1BFB1DF600F7722A /* ViewController.xib in Resources */,
534FB2AE180975D700B5F868 /* Icons.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -292,6 +356,17 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
2A8A9A6B1BFA59F7002944B4 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2A8A9A8D1BFA7B79002944B4 /* AppDelegate.m in Sources */,
2A8A9A861BFA5B04002944B4 /* ViewController.m in Sources */,
2A1DDC8D1BFB1C5D00F7722A /* main.m in Sources */,
2A8A9A871BFA5B6A002944B4 /* FSOpenSSL.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
533ED2F71528C4840005C6FA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -322,22 +397,6 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
533ED3081528C4840005C6FA /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
533ED3091528C4840005C6FA /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
533ED3141528C4840005C6FA /* ViewController.xib */ = {
isa = PBXVariantGroup;
children = (
533ED3151528C4840005C6FA /* en */,
);
name = ViewController.xib;
sourceTree = "<group>";
};
53572A53183AAFFE00B21832 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
@ -349,6 +408,64 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
2A8A9A801BFA59F7002944B4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
INFOPLIST_FILE = "OpenSSL-for-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/lib",
);
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_BUNDLE_IDENTIFIER = "de.felixschulze.OpenSSL-for-tvOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
2A8A9A811BFA59F7002944B4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
INFOPLIST_FILE = "OpenSSL-for-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/lib",
);
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "de.felixschulze.OpenSSL-for-tvOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Release;
};
533ED31A1528C4840005C6FA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -382,10 +499,11 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "include/**";
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
@ -414,10 +532,11 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "include/**";
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TVOS_DEPLOYMENT_TARGET = 9.0;
VALIDATE_PRODUCT = YES;
};
name = Release;
@ -525,6 +644,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
2A8A9A821BFA59F7002944B4 /* Build configuration list for PBXNativeTarget "OpenSSL-for-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2A8A9A801BFA59F7002944B4 /* Debug */,
2A8A9A811BFA59F7002944B4 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
533ED2F51528C4840005C6FA /* Build configuration list for PBXProject "OpenSSL-for-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -10,11 +10,8 @@
#import <UIKit/UIKit.h>
@class ViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@end

View File

@ -13,14 +13,18 @@
@implementation AppDelegate
@synthesize window = _window;
@synthesize viewController = _viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
UIViewController *viewController = [[ViewController alloc] init];
#if TARGET_OS_TV
self.window.rootViewController = viewController;
#else
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
navigationController.navigationBar.translucent = NO;
self.window.rootViewController = navigationController;
#endif
[self.window makeKeyAndVisible];
return YES;
}

View File

@ -39,6 +39,9 @@
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>

View File

@ -4,8 +4,8 @@
#import <Availability.h>
#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#ifndef __IPHONE_8_0
#warning "This project uses features only available in iOS SDK 8.0 and later."
#endif
#ifdef __OBJC__

View File

@ -17,7 +17,5 @@
@property (nonatomic, strong) IBOutlet UILabel *sha256TextField;
- (IBAction)showInfo;
- (IBAction)calculateMD5:(id)sender;
- (IBAction)calculateSHA256:(id)sender;
@end

View File

@ -14,37 +14,58 @@
@implementation ViewController
@synthesize textField;
@synthesize md5TextField;
@synthesize sha256TextField;
#pragma mark -
#pragma mark OpenSSL
- (IBAction)calculateMD5:(id)sender
- (instancetype)init
{
md5TextField.text = [FSOpenSSL md5FromString:textField.text];
//Hide Keyboard after calculation
[textField resignFirstResponder];
NSString *nibName = @"ViewController";
#if TARGET_OS_TV
nibName = @"ViewController~tv";
#endif
self = [super initWithNibName:nibName bundle:nil];
if (self) {
}
return self;
}
- (IBAction)calculateSHA256:(id)sender
- (void)viewDidLoad
{
sha256TextField.text = [FSOpenSSL sha256FromString:textField.text];
//Hide Keyboard after calculation
[textField resignFirstResponder];
self.title = @"OpenSSL-for-iOS";
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(showInfo) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
[_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
[self calculateHash];
[super viewDidLoad];
}
- (IBAction)textFieldDidChange:(id)sender
{
[self calculateHash];
}
- (void)calculateHash
{
if (_textField.text.length > 0)
{
_md5TextField.text = [FSOpenSSL md5FromString:_textField.text];
_sha256TextField.text = [FSOpenSSL sha256FromString:_textField.text];
}
else
{
_md5TextField.text = nil;
_sha256TextField.text = nil;
}
}
- (IBAction)showInfo
{
NSString *message = [NSString stringWithFormat:@"OpenSSL-Version: %@\nLicense: See include/LICENSE\n\nCopyright 2010-2015 by Felix Schulze\n http://www.felixschulze.de", @OPENSSL_VERSION_TEXT];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"OpenSSL-for-iOS" message:message delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil];
[alert show];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"OpenSSL-for-iOS" message:message preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleCancel handler:nil]];
[self presentViewController:alertController animated:YES completion:nil];
}
@end

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9060" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ViewController">
@ -15,62 +15,25 @@
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="6">
<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="SHA256-Hash:" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="32">
<rect key="frame" x="19" y="298" width="115" height="21"/>
<rect key="frame" x="19" y="147" width="115" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<navigationBar contentMode="scaleToFill" translucent="NO" translatesAutoresizingMaskIntoConstraints="NO" id="33">
<rect key="frame" x="0.0" y="20" width="320" height="44"/>
<animations/>
<items>
<navigationItem title="OpenSSL-for-iOS" id="41">
<barButtonItem key="rightBarButtonItem" id="42">
<button key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="infoLight" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" id="43">
<rect key="frame" x="282" y="11" width="22" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<animations/>
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
<state key="normal">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="showInfo" destination="-1" eventType="touchDown" id="49"/>
</connections>
</button>
</barButtonItem>
</navigationItem>
</items>
</navigationBar>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="34">
<rect key="frame" x="19" y="142" width="282" height="30"/>
<animations/>
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
<state key="normal" title="Calculate MD5">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="calculateMD5:" destination="-1" eventType="touchDown" id="47"/>
</connections>
</button>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="MD5-Hash:" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="35">
<rect key="frame" x="19" y="230" width="282" height="21"/>
<rect key="frame" x="19" y="79" width="282" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="36">
<rect key="frame" x="20" y="259" width="285" height="31"/>
<rect key="frame" x="20" y="108" width="285" height="31"/>
<animations/>
<constraints>
<constraint firstAttribute="height" constant="31" id="NFv-MT-xiJ"/>
@ -80,13 +43,13 @@
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="Enter an Text here" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="37">
<rect key="frame" x="19" y="103" width="286" height="30"/>
<rect key="frame" x="19" y="39" width="286" height="30"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<textInputTraits key="textInputTraits"/>
</textField>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" lineBreakMode="tailTruncation" numberOfLines="3" minimumFontSize="10" preferredMaxLayoutWidth="286" translatesAutoresizingMaskIntoConstraints="NO" id="38">
<rect key="frame" x="19" y="327" width="286" height="62"/>
<rect key="frame" x="19" y="176" width="286" height="62"/>
<animations/>
<constraints>
<constraint firstAttribute="height" constant="62" id="Mzu-Rf-gIS"/>
@ -96,59 +59,39 @@
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Text:" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="39">
<rect key="frame" x="19" y="74" width="291" height="21"/>
<rect key="frame" x="19" y="10" width="291" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="40">
<rect key="frame" x="19" y="185" width="282" height="30"/>
<animations/>
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
<state key="normal" title="Calculate SHA256">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="calculateSHA256:" destination="-1" eventType="touchDown" id="48"/>
</connections>
</button>
</subviews>
<animations/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="39" firstAttribute="top" secondItem="33" secondAttribute="bottom" constant="10" id="1BI-aY-9IL"/>
<constraint firstItem="34" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="9Si-AP-ujc"/>
<constraint firstItem="33" firstAttribute="top" secondItem="6" secondAttribute="top" constant="20" id="APT-3I-FbY"/>
<constraint firstItem="37" firstAttribute="top" secondItem="39" secondAttribute="bottom" constant="8" id="DY2-fM-vja"/>
<constraint firstAttribute="trailing" secondItem="39" secondAttribute="trailing" constant="10" id="E5l-9t-8ub"/>
<constraint firstAttribute="trailing" secondItem="38" secondAttribute="trailing" constant="15" id="FDW-g2-HAY"/>
<constraint firstAttribute="trailing" secondItem="37" secondAttribute="trailing" constant="15" id="Fdz-7s-qS8"/>
<constraint firstItem="39" firstAttribute="top" secondItem="33" secondAttribute="bottom" constant="10" id="FrT-O7-kcV"/>
<constraint firstItem="37" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="Frd-IC-wkx"/>
<constraint firstAttribute="trailing" secondItem="34" secondAttribute="trailing" constant="19" id="Kaz-5b-hGg"/>
<constraint firstItem="33" firstAttribute="leading" secondItem="6" secondAttribute="leading" id="Kg3-AW-whn"/>
<constraint firstItem="40" firstAttribute="top" secondItem="34" secondAttribute="bottom" constant="13" id="MuK-nL-h9r"/>
<constraint firstAttribute="trailing" secondItem="40" secondAttribute="trailing" constant="19" id="OCL-4J-Afe"/>
<constraint firstItem="39" firstAttribute="top" secondItem="6" secondAttribute="top" constant="10" id="Oer-Gm-fpu"/>
<constraint firstItem="32" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="Qhw-U6-ddG"/>
<constraint firstAttribute="trailing" secondItem="36" secondAttribute="trailing" constant="15" id="Rvx-aO-gN3"/>
<constraint firstItem="36" firstAttribute="top" secondItem="35" secondAttribute="bottom" constant="8" id="Sbh-yp-0nU"/>
<constraint firstItem="39" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="T5B-5h-q8D"/>
<constraint firstItem="38" firstAttribute="top" secondItem="32" secondAttribute="bottom" constant="8" id="V13-2M-nQL"/>
<constraint firstAttribute="trailing" secondItem="33" secondAttribute="trailing" id="YVQ-uh-xT0"/>
<constraint firstItem="32" firstAttribute="top" secondItem="36" secondAttribute="bottom" constant="8" id="c8h-oI-R7k"/>
<constraint firstAttribute="trailing" secondItem="32" secondAttribute="trailing" constant="186" id="cjr-lK-8r8"/>
<constraint firstItem="36" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="20" id="fu0-sJ-lpg"/>
<constraint firstItem="38" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="kvt-2f-KaA"/>
<constraint firstItem="35" firstAttribute="top" secondItem="40" secondAttribute="bottom" constant="15" id="mgw-q7-EJV"/>
<constraint firstItem="34" firstAttribute="top" secondItem="37" secondAttribute="bottom" constant="9" id="qjY-Mb-DC0"/>
<constraint firstItem="38" firstAttribute="top" secondItem="32" secondAttribute="bottom" constant="8" id="upF-NZ-nEv"/>
<constraint firstItem="35" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="vKV-5k-hyL"/>
<constraint firstItem="40" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="wwh-gr-08J"/>
<constraint firstAttribute="trailing" secondItem="35" secondAttribute="trailing" constant="19" id="yfT-nP-QM6"/>
<constraint firstItem="35" firstAttribute="top" secondItem="37" secondAttribute="bottom" constant="10" id="yuZ-MA-BJn"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="444" y="580"/>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" translucent="NO" prompted="NO"/>
<simulatedScreenMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="222" y="537"/>
</view>
</objects>
</document>

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder.AppleTV.XIB" version="3.0" toolsVersion="9060" systemVersion="15B42" targetRuntime="AppleTV" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ViewController">
<connections>
<outlet property="md5TextField" destination="36" id="44"/>
<outlet property="sha256TextField" destination="38" id="45"/>
<outlet property="textField" destination="37" id="46"/>
<outlet property="view" destination="6" id="7"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="6">
<rect key="frame" x="0.0" y="145" width="1920" height="935"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="SHA256-Hash:" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="32">
<rect key="frame" x="19" y="183" width="1715" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="MD5-Hash:" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="35">
<rect key="frame" x="19" y="115" width="1882" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="36">
<rect key="frame" x="20" y="144" width="1885" height="31"/>
<animations/>
<constraints>
<constraint firstAttribute="height" constant="31" id="NFv-MT-xiJ"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="Enter an Text here" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="37">
<rect key="frame" x="19" y="39" width="1886" height="66"/>
<animations/>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<textInputTraits key="textInputTraits"/>
</textField>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" lineBreakMode="tailTruncation" numberOfLines="3" minimumFontSize="10" preferredMaxLayoutWidth="286" translatesAutoresizingMaskIntoConstraints="NO" id="38">
<rect key="frame" x="19" y="212" width="1886" height="62"/>
<animations/>
<constraints>
<constraint firstAttribute="height" constant="62" id="Mzu-Rf-gIS"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Text:" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="39">
<rect key="frame" x="19" y="10" width="1891" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TWY-MC-0E2">
<rect key="frame" x="602" y="19" width="145" height="86"/>
<animations/>
<inset key="contentEdgeInsets" minX="40" minY="20" maxX="40" maxY="20"/>
<state key="normal" title="Info"/>
<connections>
<action selector="showInfo" destination="-1" eventType="primaryActionTriggered" id="W9M-mp-YM0"/>
</connections>
</button>
</subviews>
<animations/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="37" firstAttribute="top" secondItem="39" secondAttribute="bottom" constant="8" id="DY2-fM-vja"/>
<constraint firstAttribute="trailing" secondItem="39" secondAttribute="trailing" constant="10" id="E5l-9t-8ub"/>
<constraint firstAttribute="trailing" secondItem="38" secondAttribute="trailing" constant="15" id="FDW-g2-HAY"/>
<constraint firstAttribute="trailing" secondItem="37" secondAttribute="trailing" constant="15" id="Fdz-7s-qS8"/>
<constraint firstItem="37" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="Frd-IC-wkx"/>
<constraint firstItem="39" firstAttribute="top" secondItem="6" secondAttribute="top" constant="10" id="Oer-Gm-fpu"/>
<constraint firstItem="32" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="Qhw-U6-ddG"/>
<constraint firstAttribute="trailing" secondItem="36" secondAttribute="trailing" constant="15" id="Rvx-aO-gN3"/>
<constraint firstItem="36" firstAttribute="top" secondItem="35" secondAttribute="bottom" constant="8" id="Sbh-yp-0nU"/>
<constraint firstItem="39" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="T5B-5h-q8D"/>
<constraint firstItem="38" firstAttribute="top" secondItem="32" secondAttribute="bottom" constant="8" id="V13-2M-nQL"/>
<constraint firstItem="32" firstAttribute="top" secondItem="36" secondAttribute="bottom" constant="8" id="c8h-oI-R7k"/>
<constraint firstAttribute="trailing" secondItem="32" secondAttribute="trailing" constant="186" id="cjr-lK-8r8"/>
<constraint firstItem="36" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="20" id="fu0-sJ-lpg"/>
<constraint firstItem="38" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="kvt-2f-KaA"/>
<constraint firstItem="38" firstAttribute="top" secondItem="32" secondAttribute="bottom" constant="8" id="upF-NZ-nEv"/>
<constraint firstItem="35" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="19" id="vKV-5k-hyL"/>
<constraint firstAttribute="trailing" secondItem="35" secondAttribute="trailing" constant="19" id="yfT-nP-QM6"/>
<constraint firstItem="35" firstAttribute="top" secondItem="37" secondAttribute="bottom" constant="10" id="yuZ-MA-BJn"/>
</constraints>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" translucent="NO" prompted="NO"/>
<simulatedScreenMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="222" y="537"/>
</view>
</objects>
</document>

View File

@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "tv",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,17 @@
{
"layers" : [
{
"filename" : "Front.imagestacklayer"
},
{
"filename" : "Middle.imagestacklayer"
},
{
"filename" : "Back.imagestacklayer"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "tv",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "tv",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "tv",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,17 @@
{
"layers" : [
{
"filename" : "Front.imagestacklayer"
},
{
"filename" : "Middle.imagestacklayer"
},
{
"filename" : "Back.imagestacklayer"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "tv",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "tv",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,26 @@
{
"assets" : [
{
"size" : "1280x768",
"idiom" : "tv",
"filename" : "App Icon - Large.imagestack",
"role" : "primary-app-icon"
},
{
"size" : "400x240",
"idiom" : "tv",
"filename" : "App Icon - Small.imagestack",
"role" : "primary-app-icon"
},
{
"size" : "1920x720",
"idiom" : "tv",
"filename" : "Top Shelf Image.imageset",
"role" : "top-shelf-image"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "tv",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"orientation" : "landscape",
"idiom" : "tv",
"extent" : "full-screen",
"minimum-system-version" : "9.0",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
</dict>
</plist>

View File

@ -23,6 +23,7 @@ If you have problems building for arm64 please uninstall MacPorts (see #28).
* <http://www.x2on.de/2010/07/13/tutorial-iphone-app-with-compiled-openssl-1-0-0a-library/>
## Changelog
* 2015-11-17: tvOS example app
* 2015-11-16: tvOS support
* 2015-10-25: Xcode 7.1 support
* 2015-08-06: iOS 9.0 support, Bitcode support