Merge pull request #1279 from VladiMihaylenko/master

[ios] What's new with 3d.
This commit is contained in:
Alexander Matveenko 2016-01-07 19:38:22 +03:00
commit 5a51e522fc
22 changed files with 300 additions and 46 deletions

View file

@ -5,4 +5,9 @@ NS_CLASS_AVAILABLE_IOS(8_0) @interface MWMPageController : UIPageViewController
- (void)nextPage;
- (void)show;
- (void)enableFirst:(UIButton *)button;
- (void)enableSecond;
- (void)skipFirst;
- (void)skipSecond;
@end

View file

@ -2,9 +2,17 @@
#import "MWMWhatsNewController.h"
#import "Statistics.h"
static NSString * const kPageViewControllerStoryboardID = @"PageViewController";
static NSString * const kContentViewControllerStoryboardID = @"PageContentController";
static NSUInteger const kNumberOfPages = 2;
#include "Framework.h"
namespace
{
NSString * const kPageViewControllerStoryboardID = @"PageViewController";
NSString * const kContentViewControllerStoryboardID = @"PageContentController";
NSUInteger const kNumberOfPages = 2;
} // namespace
extern NSString * const kUDWhatsNewWasShown;
@protocol MWMPageControllerDataSource <UIPageViewControllerDataSource>
@ -16,6 +24,7 @@ extern NSString * const kUDWhatsNewWasShown;
NS_CLASS_AVAILABLE_IOS(8_0) @interface MWMPageControllerDataSourceImpl : NSObject <MWMPageControllerDataSource>
@property (weak, nonatomic, readonly) MWMPageController * pageController;
@property (nonatomic) BOOL isButtonSelectedOnFirstScreen;
- (instancetype)initWithPageController:(MWMPageController *)pageController;
@ -55,28 +64,27 @@ NS_CLASS_AVAILABLE_IOS(8_0) @interface MWMPageControllerDataSourceImpl : NSObjec
bundle:[NSBundle mainBundle]];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(MWMWhatsNewController *)viewController
{
NSUInteger index = [(MWMWhatsNewController *)viewController pageIndex];
NSUInteger index = viewController.pageIndex;
viewController.enableButton.selected = self.isButtonSelectedOnFirstScreen;
if ((index == 0) || (index == NSNotFound))
if (index == 0 || index == NSNotFound)
return nil;
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(MWMWhatsNewController *)viewController
{
NSUInteger index = [(MWMWhatsNewController *)viewController pageIndex];
NSUInteger index = viewController.pageIndex;
viewController.enableButton.selected = NO;
if (index == NSNotFound)
if (index == NSNotFound || index == kNumberOfPages - 1)
return nil;
index++;
if (index == kNumberOfPages)
return nil;
return [self viewControllerAtIndex:index];
}
@ -105,7 +113,8 @@ NS_CLASS_AVAILABLE_IOS(8_0) @interface MWMPageControllerDataSourceImpl : NSObjec
- (void)close
{
[[Statistics instance] logEvent:kStatEventName(kStatWhatsNew, kUDWhatsNewWasShown) withParameters:@{kStatAction : kStatClose}];
[[Statistics instance] logEvent:kStatEventName(kStatWhatsNew, kUDWhatsNewWasShown)
withParameters:@{kStatAction : kStatClose}];
[self.iPadBackgroundView removeFromSuperview];
[self.view removeFromSuperview];
[self removeFromParentViewController];
@ -113,13 +122,15 @@ NS_CLASS_AVAILABLE_IOS(8_0) @interface MWMPageControllerDataSourceImpl : NSObjec
- (void)nextPage
{
[[Statistics instance] logEvent:kStatEventName(kStatWhatsNew, kUDWhatsNewWasShown) withParameters:@{kStatAction : kStatNext}];
[[Statistics instance] logEvent:kStatEventName(kStatWhatsNew, kUDWhatsNewWasShown)
withParameters:@{kStatAction : kStatNext}];
[self setViewControllers:@[[self.pageControllerDataSource viewControllerAtIndex:1]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
}
- (void)show
{
[[Statistics instance] logEvent:kStatEventName(kStatWhatsNew, kUDWhatsNewWasShown) withParameters:@{kStatAction : kStatOpen}];
[[Statistics instance] logEvent:kStatEventName(kStatWhatsNew, kUDWhatsNewWasShown)
withParameters:@{kStatAction : kStatOpen}];
if (IPAD)
[self.parent.view addSubview:self.iPadBackgroundView];
[self.parent addChildViewController:self];
@ -127,19 +138,64 @@ NS_CLASS_AVAILABLE_IOS(8_0) @interface MWMPageControllerDataSourceImpl : NSObjec
[self didMoveToParentViewController:self.parent];
}
#pragma mark - Enabled methods
- (void)enableFirst:(UIButton *)button
{
auto & f = GetFramework();
bool _ = true, is3dBuildings = true;
f.Load3dMode(_, is3dBuildings);
BOOL const isEnabled = !button.selected;
f.Save3dMode(_, isEnabled);
f.Allow3dMode(_, isEnabled);
button.selected = self.pageControllerDataSource.isButtonSelectedOnFirstScreen = isEnabled;
[self nextPage];
}
- (void)enableSecond
{
auto & f = GetFramework();
bool _ = true;
f.Load3dMode(_, _);
f.Save3dMode(true, _);
f.Allow3dMode(true, _);
[self close];
}
- (void)skipFirst
{
auto & f = GetFramework();
bool _ = true, is3dBuildings = true;
f.Load3dMode(_, is3dBuildings);
f.Save3dMode(_, false);
f.Allow3dMode(_, false);
[self nextPage];
}
- (void)skipSecond
{
auto & f = GetFramework();
bool _ = true;
f.Load3dMode(_, _);
f.Save3dMode(false, _);
f.Allow3dMode(false, _);
[self close];
}
#pragma mark - Private methods
- (CGSize)defaultSize
{
return IPAD ? CGSizeMake(520.0, 600.0) : self.parent.view.frame.size;
}
#pragma mark Private methods
- (void)configure
{
UIView * mainView = self.view;
UIView * parentView = self.parent.view;
CGSize const size = self.defaultSize;
CGPoint const origin = IPAD ? CGPointMake(parentView.center.x - size.width / 2, parentView.center.y - size.height / 2) : CGPointZero;
CGPoint const origin = IPAD ? CGPointMake(parentView.center.x - size.width / 2, parentView.center.y - size.height / 2) :
CGPointZero;
mainView.frame = {origin, size};
mainView.backgroundColor = [UIColor whiteColor];
if (IPAD)
@ -158,7 +214,7 @@ NS_CLASS_AVAILABLE_IOS(8_0) @interface MWMPageControllerDataSourceImpl : NSObjec
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
if (IPAD)
self.view.center = {size.width / 2, size.height / 2 };
self.view.center = self.parent.view.center;
else
self.view.origin = {};
}

View file

@ -4,6 +4,7 @@
@property (nonatomic) NSUInteger pageIndex;
@property (weak, nonatomic) MWMPageController * pageController;
@property (weak, nonatomic, readonly) IBOutlet UIButton * enableButton;
- (void)updateForSize:(CGSize)size;

View file

@ -7,7 +7,8 @@
@property (weak, nonatomic) IBOutlet UIImageView * image;
@property (weak, nonatomic) IBOutlet UILabel * alertTitle;
@property (weak, nonatomic) IBOutlet UILabel * alertText;
@property (weak, nonatomic) IBOutlet UIButton * button;
@property (weak, nonatomic) IBOutlet UIButton * nextPageButton;
@property (weak, nonatomic, readwrite) IBOutlet UIButton * enableButton;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * containerWidth;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * containerHeight;
@ -16,6 +17,7 @@
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * titleTopOffset;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * titleImageOffset;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * betweenButtonsOffset;
@end
@ -33,20 +35,25 @@
- (void)configureFirstPage
{
self.image.image = [UIImage imageNamed:@"img_tts"];
self.alertTitle.text = L(@"whats_new_where_to_turn");
self.alertText.text = L(@"whats_new_voice_instructions");
[self.button setTitle:L(@"whats_new_next") forState:UIControlStateNormal];
[self.button addTarget:self.pageController action:@selector(nextPage) forControlEvents:UIControlEventTouchUpInside];
self.image.image = [UIImage imageNamed:@"img_3d_buildings"];
self.alertTitle.text = L(@"whats_new_3d_buildings_title");
self.alertText.text = [NSString stringWithFormat:@"%@\n\n%@", L(@"whats_new_3d_buildings_subtitle"), L(@"3d_new_update_maps")];
[self.enableButton setTitle:L(@"3d_new_buildings_on") forState:UIControlStateNormal];
[self.nextPageButton setTitle:L(@"dialog_routing_not_now") forState:UIControlStateNormal];
[self.nextPageButton addTarget:self.pageController action:@selector(skipFirst) forControlEvents:UIControlEventTouchUpInside];
[self.enableButton addTarget:self.pageController action:@selector(enableFirst:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)configureSecondPage
{
self.image.image = [UIImage imageNamed:@"img_p2p"];
self.alertTitle.text = L(@"whats_new_between_any_points");
self.alertText.text = L(@"whats_new_happy_day");
[self.button setTitle:L(@"done") forState:UIControlStateNormal];
[self.button addTarget:self.pageController action:@selector(close) forControlEvents:UIControlEventTouchUpInside];
self.image.image = [UIImage imageNamed:@"img_perspective_view"];
self.alertTitle.text = L(@"whats_new_3d_title");
self.alertText.text = L(@"whats_new_3d_subtitle");
[self.enableButton setTitle:L(@"3d_new_on") forState:UIControlStateNormal];
[self.nextPageButton setTitle:L(@"dialog_routing_not_now") forState:UIControlStateNormal];
[self.nextPageButton addTarget:self.pageController action:@selector(skipSecond) forControlEvents:UIControlEventTouchUpInside];
[self.enableButton addTarget:self.pageController action:@selector(enableSecond) forControlEvents:UIControlEventTouchUpInside];
self.enableButton.selected = NO;
}
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
@ -71,6 +78,8 @@
self.image.hidden = hideImage;
self.containerWidth.constant = width;
self.containerHeight.constant = height;
BOOL const isPortrait = (!IPAD && size.height > size.width);
self.betweenButtonsOffset.constant = isPortrait ? 16 : 8;
}
@end

View file

@ -33,7 +33,7 @@
#import "../../../private.h"
extern NSString * const kAlohalyticsTapEventKey = @"$onClick";
extern NSString * const kUDWhatsNewWasShown = @"WhatsNewWithTTSAndP2PWasShown";
extern NSString * const kUDWhatsNewWasShown = @"WhatsNewWith3dAndPerspectiveWasShown";
extern char const * kAdForbiddenSettingsKey;
extern char const * kAdServerForbiddenKey;
@ -395,8 +395,9 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction)
self.controlsManager.menuState = self.menuRestoreState;
[self refreshAd];
GetFramework().InvalidateRendering();
[self showWhatsNewIfNeeded];
}
- (void)viewDidLoad

View file

@ -2,17 +2,17 @@
"images" : [
{
"idiom" : "universal",
"filename" : "img_p2p.png",
"filename" : "img_3d_buildings.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "img_p2p@2x.png",
"filename" : "img_3d_buildings@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "img_p2p@3x.png",
"filename" : "img_3d_buildings@3x.png",
"scale" : "3x"
}
],

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View file

@ -2,17 +2,17 @@
"images" : [
{
"idiom" : "universal",
"filename" : "img_tts.png",
"filename" : "img_perspective_view.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "img_tts@2x.png",
"filename" : "img_perspective_view@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "img_tts@3x.png",
"filename" : "img_perspective_view@3x.png",
"scale" : "3x"
}
],

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View file

@ -10,6 +10,7 @@
<customFonts key="customFonts">
<mutableArray key="HelveticaNeue.ttc">
<string>HelveticaNeue-Medium</string>
<string>HelveticaNeue-Medium</string>
</mutableArray>
</customFonts>
<scenes>
@ -494,7 +495,7 @@
<!--Whats New Controller-->
<scene sceneID="BHc-6D-CJw">
<objects>
<viewController storyboardIdentifier="PageContentController" id="Fjp-WS-uUD" customClass="MWMWhatsNewController" sceneMemberID="viewController">
<viewController id="Fjp-WS-uUD" customClass="MWMWhatsNewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="WHe-e5-0L3"/>
<viewControllerLayoutGuide type="bottom" id="jfD-hq-SOU"/>
@ -512,7 +513,7 @@
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KYa-do-R0L" userLabel="CenteredView">
<rect key="frame" x="44" y="59" width="400" height="337"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="img_tts" translatesAutoresizingMaskIntoConstraints="NO" id="9EX-CE-PRs">
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="img_perspective_view" translatesAutoresizingMaskIntoConstraints="NO" id="9EX-CE-PRs">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" priority="800" constant="120" id="Vf0-P1-t3t"/>
@ -520,7 +521,7 @@
<constraint firstAttribute="height" relation="lessThanOrEqual" priority="800" constant="240" id="qCH-Vy-jyv"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MAPS.ME подскажет куда поворачивать" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="geS-K2-Efv" userLabel="Title">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MAPS.ME подскажет куда поворачивать" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="geS-K2-Efv" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="48"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
@ -530,7 +531,7 @@
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Мы разделили большие карты на части. И теперь они будут быстрее загружаться. Попробуйте." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="cK0-L8-zCK" userLabel="Text">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Мы разделили большие карты на части. И теперь они будут быстрее загружаться. Попробуйте." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cK0-L8-zCK" userLabel="Text">
<rect key="frame" x="0.0" y="304" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
@ -618,13 +619,13 @@
<connections>
<outlet property="alertText" destination="cK0-L8-zCK" id="gu4-cI-1A4"/>
<outlet property="alertTitle" destination="geS-K2-Efv" id="pCx-P7-LCl"/>
<outlet property="button" destination="D1s-fA-Vvv" id="3hj-We-v0j"/>
<outlet property="containerHeight" destination="XnU-Mt-dDy" id="RfT-aB-VuD"/>
<outlet property="containerView" destination="Aly-IM-2KF" id="zab-zk-88p"/>
<outlet property="containerWidth" destination="vgo-Ww-ozv" id="oeQ-Wm-3we"/>
<outlet property="image" destination="9EX-CE-PRs" id="Zl0-px-XFu"/>
<outlet property="imageHeight" destination="Ox3-ge-rJ4" id="BfV-7o-qur"/>
<outlet property="imageMinHeight" destination="Vf0-P1-t3t" id="3Fd-va-gQE"/>
<outlet property="nextPageButton" destination="D1s-fA-Vvv" id="7Sb-5n-Rzw"/>
<outlet property="titleImageOffset" destination="LmJ-1R-gjc" id="wqR-oD-P6m"/>
<outlet property="titleTopOffset" destination="iaW-ur-87P" id="a9F-xk-vjW"/>
</connections>
@ -633,8 +634,179 @@
</objects>
<point key="canvasLocation" x="1798" y="1224"/>
</scene>
<!--Whats New Controller-->
<scene sceneID="MYd-bd-VsQ">
<objects>
<viewController storyboardIdentifier="PageContentController" id="efw-TH-VUf" customClass="MWMWhatsNewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="c3A-fh-ac5"/>
<viewControllerLayoutGuide type="bottom" id="sSr-Q7-vth"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="nkC-Df-vwi">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="D7d-Qb-2An" userLabel="Container">
<rect key="frame" x="40" y="0.0" width="520" height="600"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oRc-M5-KT8" userLabel="BoundsView">
<rect key="frame" x="16" y="40" width="488" height="400"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dbV-Wy-qVl" userLabel="CenteredView">
<rect key="frame" x="44" y="31.5" width="400" height="337"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="img_perspective_view" translatesAutoresizingMaskIntoConstraints="NO" id="89l-86-0xk">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="height" relation="lessThanOrEqual" priority="800" constant="240" id="0NX-uC-IIy"/>
<constraint firstAttribute="width" secondItem="89l-86-0xk" secondAttribute="height" multiplier="1:1" id="4I8-QL-cai"/>
<constraint firstAttribute="height" relation="greaterThanOrEqual" priority="800" constant="100" id="sfX-V5-aVk"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MAPS.ME подскажет куда поворачивать" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YVE-HL-Y3R" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="48"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Мы разделили большие карты на части. И теперь они будут быстрее загружаться. Попробуйте." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AGS-qW-3fZ" userLabel="Text">
<rect key="frame" x="0.0" y="304" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstItem="89l-86-0xk" firstAttribute="top" secondItem="dbV-Wy-qVl" secondAttribute="top" id="33g-BD-bBQ"/>
<constraint firstItem="YVE-HL-Y3R" firstAttribute="top" secondItem="89l-86-0xk" secondAttribute="bottom" priority="750" constant="20" id="AC3-td-lC6"/>
<constraint firstItem="YVE-HL-Y3R" firstAttribute="centerX" secondItem="dbV-Wy-qVl" secondAttribute="centerX" id="B3W-pT-NJi"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="FrN-ck-wqA"/>
<constraint firstAttribute="bottom" secondItem="AGS-qW-3fZ" secondAttribute="bottom" id="Gaf-dY-G3J"/>
<constraint firstItem="89l-86-0xk" firstAttribute="centerX" secondItem="dbV-Wy-qVl" secondAttribute="centerX" id="L4Q-E6-DGL"/>
<constraint firstItem="AGS-qW-3fZ" firstAttribute="width" secondItem="dbV-Wy-qVl" secondAttribute="width" id="b19-IZ-DAT"/>
<constraint firstItem="AGS-qW-3fZ" firstAttribute="centerX" secondItem="dbV-Wy-qVl" secondAttribute="centerX" id="f8d-rD-PKA"/>
<constraint firstItem="YVE-HL-Y3R" firstAttribute="top" secondItem="dbV-Wy-qVl" secondAttribute="top" priority="740" constant="40" id="kEV-iA-N07"/>
<constraint firstItem="YVE-HL-Y3R" firstAttribute="width" secondItem="dbV-Wy-qVl" secondAttribute="width" id="oZ3-BX-lh6"/>
<constraint firstItem="AGS-qW-3fZ" firstAttribute="top" secondItem="YVE-HL-Y3R" secondAttribute="bottom" constant="16" id="xlc-7K-6QC"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="dbV-Wy-qVl" secondAttribute="trailing" priority="999" constant="44" id="7bX-3h-FLg"/>
<constraint firstItem="dbV-Wy-qVl" firstAttribute="centerY" secondItem="oRc-M5-KT8" secondAttribute="centerY" id="Gyi-cX-e5G"/>
<constraint firstItem="dbV-Wy-qVl" firstAttribute="centerX" secondItem="oRc-M5-KT8" secondAttribute="centerX" id="LK5-oF-WvR"/>
<constraint firstItem="dbV-Wy-qVl" firstAttribute="height" relation="lessThanOrEqual" secondItem="oRc-M5-KT8" secondAttribute="height" id="SK6-21-mHu"/>
<constraint firstItem="dbV-Wy-qVl" firstAttribute="leading" secondItem="oRc-M5-KT8" secondAttribute="leading" priority="999" constant="44" id="w9S-Lr-0PC"/>
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yYS-bY-oOp" userLabel="NotNow">
<rect key="frame" x="140" y="460" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="240" id="8VY-ls-PhU"/>
<constraint firstAttribute="height" constant="44" id="K9e-bd-7Zx"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Enable">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="whiteColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorSelectedName" value="whiteColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="layer.borderColorName" value="buttonEnabledBlueText"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="buttonEnabledBlueText"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="clearColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundHighlightedColorName" value="buttonEnabledBlueText"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundSelectedColorName" value="buttonEnabledBlueText"/>
</userDefinedRuntimeAttributes>
</button>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eUZ-Ui-GVQ" userLabel="NotNow">
<rect key="frame" x="140" y="520" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="240" id="DCl-bv-H9r"/>
<constraint firstAttribute="height" constant="44" id="jjR-GW-5LC"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Not Now">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="whiteColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="buttonEnabledBlueText"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="clearColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundHighlightedColorName" value="buttonEnabledBlueText"/>
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="eUZ-Ui-GVQ" firstAttribute="top" secondItem="yYS-bY-oOp" secondAttribute="bottom" constant="16" id="1bu-6e-sMf"/>
<constraint firstItem="oRc-M5-KT8" firstAttribute="top" secondItem="D7d-Qb-2An" secondAttribute="top" constant="40" id="20J-B5-SZC"/>
<constraint firstItem="yYS-bY-oOp" firstAttribute="centerX" secondItem="D7d-Qb-2An" secondAttribute="centerX" id="32c-pv-xs8"/>
<constraint firstItem="yYS-bY-oOp" firstAttribute="top" secondItem="oRc-M5-KT8" secondAttribute="bottom" constant="20" id="Du1-7t-mLV"/>
<constraint firstItem="oRc-M5-KT8" firstAttribute="leading" secondItem="D7d-Qb-2An" secondAttribute="leading" constant="16" id="Lq4-9h-Qmh"/>
<constraint firstAttribute="trailing" secondItem="oRc-M5-KT8" secondAttribute="trailing" constant="16" id="VTi-wm-ggu"/>
<constraint firstAttribute="bottom" secondItem="eUZ-Ui-GVQ" secondAttribute="bottom" constant="36" id="bUn-Gh-Rlr"/>
<constraint firstItem="89l-86-0xk" firstAttribute="height" secondItem="D7d-Qb-2An" secondAttribute="height" multiplier="0.3" priority="750" id="eDv-46-dEZ"/>
<constraint firstAttribute="height" constant="600" id="iuE-gX-na2"/>
<constraint firstAttribute="width" constant="520" id="ooZ-hL-8Wc"/>
<constraint firstItem="eUZ-Ui-GVQ" firstAttribute="centerX" secondItem="D7d-Qb-2An" secondAttribute="centerX" id="wiT-zA-c6e"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="D7d-Qb-2An" firstAttribute="centerY" secondItem="nkC-Df-vwi" secondAttribute="centerY" id="Rti-cT-oAe"/>
<constraint firstItem="D7d-Qb-2An" firstAttribute="centerX" secondItem="nkC-Df-vwi" secondAttribute="centerX" id="t7z-Ws-pJb"/>
</constraints>
</view>
<connections>
<outlet property="alertText" destination="AGS-qW-3fZ" id="5gJ-eh-dqQ"/>
<outlet property="alertTitle" destination="YVE-HL-Y3R" id="nwS-zC-8sE"/>
<outlet property="betweenButtonsOffset" destination="1bu-6e-sMf" id="sbZ-08-i9I"/>
<outlet property="containerHeight" destination="iuE-gX-na2" id="Pzm-59-4qM"/>
<outlet property="containerView" destination="D7d-Qb-2An" id="hTh-Xy-HVR"/>
<outlet property="containerWidth" destination="ooZ-hL-8Wc" id="cEv-fb-X0b"/>
<outlet property="enableButton" destination="yYS-bY-oOp" id="BDp-og-liJ"/>
<outlet property="image" destination="89l-86-0xk" id="fWg-zq-BiS"/>
<outlet property="imageHeight" destination="eDv-46-dEZ" id="LDb-JD-NBU"/>
<outlet property="imageMinHeight" destination="sfX-V5-aVk" id="TbE-jB-5s5"/>
<outlet property="nextPageButton" destination="eUZ-Ui-GVQ" id="nXy-An-QIy"/>
<outlet property="titleImageOffset" destination="AC3-td-lC6" id="7fa-o6-nO9"/>
<outlet property="titleTopOffset" destination="kEV-iA-N07" id="qtI-TA-ogO"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="vma-ym-5OI" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2442" y="1224"/>
</scene>
</scenes>
<resources>
<image name="img_tts" width="220" height="220"/>
<image name="img_perspective_view" width="220" height="220"/>
</resources>
</document>

View file

@ -124,7 +124,7 @@ typedef NS_ENUM(NSUInteger, Section)
{
bool _ = true;
GetFramework().Load3dMode(_, on);
customCell.titleLabel.text = L(@"pref_3d_buildings");
customCell.titleLabel.text = L(@"pref_map_3d_buildings_title");
}
else
{
@ -143,7 +143,7 @@ typedef NS_ENUM(NSUInteger, Section)
{
cell = [tableView dequeueReusableCellWithIdentifier:[SwitchCell className]];
SwitchCell * customCell = (SwitchCell *)cell;
customCell.titleLabel.text = L(@"prefs_3d_mode");
customCell.titleLabel.text = L(@"pref_map_3d_title");
customCell.delegate = self;
bool _ = true, on = true;
GetFramework().Load3dMode(on, _);

View file

@ -29,6 +29,11 @@
[self setTitleColor:[UIColor colorWithName:colorName] forState:UIControlStateHighlighted];
}
- (void)setTextColorSelectedName:(NSString *)colorName
{
[self setTitleColor:[UIColor colorWithName:colorName] forState:UIControlStateSelected];
}
- (void)setBackgroundColorName:(NSString *)colorName
{
[self setBackgroundColor:[UIColor colorWithName:colorName] forState:UIControlStateNormal];
@ -39,6 +44,11 @@
[self setBackgroundColor:[UIColor colorWithName:colorName] forState:UIControlStateHighlighted];
}
- (void)setBackgroundSelectedColorName:(NSString *)colorName
{
[self setBackgroundColor:[UIColor colorWithName:colorName] forState:UIControlStateSelected];
}
- (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state
{
[self setBackgroundImage:[UIImage imageWithColor:color] forState:state];