forked from organicmaps/organicmaps
fix navigation bugs, refactor a little
This commit is contained in:
parent
beb457603a
commit
2d9820c745
25 changed files with 190 additions and 110 deletions
|
@ -39,7 +39,6 @@
|
|||
- (void)initialize;
|
||||
- (void)enableCarPlayRepresentation;
|
||||
- (void)disableCarPlayRepresentation;
|
||||
- (void)backToTourismMain;
|
||||
|
||||
- (void)dismissPlacePage;
|
||||
|
||||
|
|
|
@ -312,6 +312,8 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing";
|
|||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
[self showButtonToTourismMain];
|
||||
|
||||
self.title = L(@"map");
|
||||
|
||||
|
@ -371,8 +373,7 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing";
|
|||
if (DeepLinkHandler.shared.isLaunchedByDeeplink)
|
||||
(void)[DeepLinkHandler.shared handleDeepLinkAndReset];
|
||||
|
||||
[self showButtonToTourismMain];
|
||||
|
||||
[self handleNavigationOnMapResume];
|
||||
[self createRoute];
|
||||
}
|
||||
|
||||
|
@ -802,7 +803,7 @@ BOOL isLocationInBounds(ms::LatLon location, ms::LatLon topLeft, ms::LatLon bott
|
|||
|
||||
homeButton.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
|
||||
[homeButton addTarget:self action:@selector(backToTourismMain) forControlEvents:UIControlEventTouchUpInside];
|
||||
[homeButton addTarget:self action:@selector(goToTourismMain) forControlEvents:UIControlEventTouchUpInside];
|
||||
|
||||
[self.controlsView addSubview:homeButton];
|
||||
|
||||
|
@ -822,7 +823,34 @@ BOOL isLocationInBounds(ms::LatLon location, ms::LatLon topLeft, ms::LatLon bott
|
|||
|
||||
}
|
||||
|
||||
- (void)backToTourismMain {
|
||||
- (void)handleNavigationOnMapResume {
|
||||
/*
|
||||
The thing is that we present those screens modally,
|
||||
so we need some way to understand when we should go anywhere.
|
||||
For example, in auth screen when user is signed in we dismiss it
|
||||
and want mapViewController to know that is should go to TourismMain
|
||||
unfortunately couldn't find any other maintainable way
|
||||
*/
|
||||
|
||||
TourismUserPreferences *prefs = [TourismUserPreferences shared];
|
||||
BOOL shouldGoToTourismMain = [prefs getShouldGoToTourismMain];
|
||||
BOOL shouldGoToAuth = [prefs getShouldGoToAuth];
|
||||
|
||||
if(shouldGoToTourismMain) {
|
||||
[prefs setShouldGoToTourismMainWithValue:NO];
|
||||
[self goToTourismMain];
|
||||
}
|
||||
if(shouldGoToAuth) {
|
||||
[prefs setShouldGoToAuthWithValue:NO];
|
||||
[self goToAuth];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)goToAuth {
|
||||
[[MapViewController sharedController]performSegueWithIdentifier:@"Map2Auth" sender:nil];
|
||||
}
|
||||
|
||||
- (void)goToTourismMain {
|
||||
[[MapViewController sharedController]performSegueWithIdentifier:@"Map2TourismMain" sender:nil];
|
||||
}
|
||||
@end
|
||||
|
|
|
@ -211,8 +211,7 @@ using namespace osm_auth_ios;
|
|||
LOG(LINFO, ("applicationDidBecomeActive - begin"));
|
||||
auto & f = GetFramework();
|
||||
|
||||
// MARK: Our default app entry point is TourismMain that's why we go there
|
||||
[self goToTourismMainIfTajikistanIsLoaded];
|
||||
[self handleNavigationForAppStartup];
|
||||
|
||||
[self moveToDushanbeIfNotInTjk];
|
||||
|
||||
|
@ -236,11 +235,17 @@ using namespace osm_auth_ios;
|
|||
|
||||
|
||||
// MARK: Functions for Tourism purposes
|
||||
|
||||
- (void) goToTourismMainIfTajikistanIsLoaded {
|
||||
- (void) handleNavigationForAppStartup {
|
||||
auto & f = GetFramework();
|
||||
|
||||
// We don't want map to be our default entry point, that's why we go to places list or auth if there's no token)
|
||||
if(f.IsCountryLoadedByName("Tajikistan")) {
|
||||
[[MapViewController sharedController]performSegueWithIdentifier:@"Map2TourismMain" sender:nil];
|
||||
TourismUserPreferences *prefs = [TourismUserPreferences shared];
|
||||
if ([prefs getToken] == nil) { // go to Auth (note: token is cleared when user signs out)
|
||||
[[MapViewController sharedController]performSegueWithIdentifier:@"Map2Auth" sender:nil];
|
||||
} else { // go to TourismMain (Home)
|
||||
[[MapViewController sharedController]performSegueWithIdentifier:@"Map2TourismMain" sender:nil];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ using namespace storage;
|
|||
}
|
||||
|
||||
if(downloadedBytes == totalBytes) {
|
||||
[[MapViewController sharedController]performSegueWithIdentifier:@"Map2TourismMain" sender:nil];
|
||||
[[MapViewController sharedController]performSegueWithIdentifier:@"Map2Auth" sender:nil];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import Foundation
|
||||
import CoreData
|
||||
import Combine
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ class ProfileServiceImpl: ProfileService {
|
|||
func updateLanguage(code: String) {
|
||||
Task {
|
||||
do {
|
||||
let response: SimpleResponse = try await AppNetworkHelper.put(
|
||||
let _: SimpleResponse = try await AppNetworkHelper.put(
|
||||
path: APIEndpoints.updateLanguageUrl,
|
||||
body: LanguageDTO(language: code)
|
||||
)
|
||||
|
@ -128,7 +128,7 @@ class ProfileServiceImpl: ProfileService {
|
|||
func updateTheme(code: String) {
|
||||
Task {
|
||||
do {
|
||||
let response: SimpleResponse = try await AppNetworkHelper.put(
|
||||
let _: SimpleResponse = try await AppNetworkHelper.put(
|
||||
path: APIEndpoints.updateThemeUrl,
|
||||
body: ThemeDTO(theme: code)
|
||||
)
|
||||
|
|
|
@ -46,11 +46,11 @@ class UserPreferences: NSObject {
|
|||
userDefaults.set(value, forKey: "theme")
|
||||
}
|
||||
|
||||
func getToken() -> String? {
|
||||
@objc func getToken() -> String? {
|
||||
return userDefaults.string(forKey: "token")
|
||||
}
|
||||
|
||||
func setToken(value: String?) {
|
||||
@objc func setToken(value: String?) {
|
||||
userDefaults.set(value, forKey: "token")
|
||||
}
|
||||
|
||||
|
@ -88,4 +88,20 @@ class UserPreferences: NSObject {
|
|||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@objc func getShouldGoToTourismMain() -> Bool {
|
||||
userDefaults.bool(forKey: "should_go_to_tourism_main")
|
||||
}
|
||||
|
||||
@objc func setShouldGoToTourismMain(value: Bool) {
|
||||
userDefaults.set(value, forKey: "should_go_to_tourism_main")
|
||||
}
|
||||
|
||||
@objc func getShouldGoToAuth() -> Bool {
|
||||
userDefaults.bool(forKey: "should_go_to_auth")
|
||||
}
|
||||
|
||||
@objc func setShouldGoToAuth(value: Bool) {
|
||||
userDefaults.set(value, forKey: "should_go_to_auth")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -193,9 +193,9 @@ class PlacesRepositoryImpl: PlacesRepository {
|
|||
|
||||
do {
|
||||
if(isFavorite) {
|
||||
try await placesService.addFavorites(ids: favoritesIdsDto)
|
||||
let _ = try await placesService.addFavorites(ids: favoritesIdsDto)
|
||||
} else {
|
||||
try await placesService.removeFromFavorites(ids: favoritesIdsDto)
|
||||
let _ = try await placesService.removeFromFavorites(ids: favoritesIdsDto)
|
||||
}
|
||||
|
||||
placesPersistenceController.removeFavoritingRecordsForSync(placeIds: [placeId])
|
||||
|
@ -215,7 +215,7 @@ class PlacesRepositoryImpl: PlacesRepository {
|
|||
if !favoritesToAdd.isEmpty {
|
||||
Task {
|
||||
do {
|
||||
let response =
|
||||
_ =
|
||||
try await placesService.addFavorites(ids: FavoritesIdsDTO(marks: favoritesToAdd))
|
||||
placesPersistenceController.removeFavoritingRecordsForSync(placeIds: favoritesToAdd)
|
||||
} catch {
|
||||
|
@ -227,7 +227,7 @@ class PlacesRepositoryImpl: PlacesRepository {
|
|||
if !favoritesToRemove.isEmpty {
|
||||
Task {
|
||||
do {
|
||||
let response =
|
||||
_ =
|
||||
try await placesService.removeFromFavorites(ids: FavoritesIdsDTO(marks: favoritesToRemove))
|
||||
placesPersistenceController.removeFavoritingRecordsForSync(placeIds: favoritesToRemove)
|
||||
} catch {
|
||||
|
|
|
@ -89,7 +89,7 @@ class ReviewsRepositoryImpl : ReviewsRepository {
|
|||
|
||||
if !reviews.isEmpty {
|
||||
let reviewsIds = reviews.map(\.id)
|
||||
let response = try await reviewsService.deleteReview(reviews: ReviewIdsDTO(feedbacks: reviewsIds))
|
||||
_ = try await reviewsService.deleteReview(reviews: ReviewIdsDTO(feedbacks: reviewsIds))
|
||||
reviewsPersistenceController.deleteReviews(ids: reviewsIds)
|
||||
}
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ class ReviewsRepositoryImpl : ReviewsRepository {
|
|||
reviewsDTO.forEach { reviewDTO in
|
||||
Task {
|
||||
do {
|
||||
let response = try await reviewsService.postReview(review: reviewDTO)
|
||||
_ = try await reviewsService.postReview(review: reviewDTO)
|
||||
updateReviewsForDb(id: reviewDTO.placeId)
|
||||
reviewsPersistenceController.deleteReviewPlannedToPost(placeId: reviewDTO.placeId)
|
||||
try reviewDTO.images.forEach { URL in
|
||||
|
|
|
@ -2,6 +2,8 @@ import UIKit
|
|||
import Combine
|
||||
|
||||
class SignInViewController: UIViewController {
|
||||
|
||||
|
||||
private var cancellables = Set<AnyCancellable>()
|
||||
private var authRepository = AuthRepositoryImpl(authService: AuthServiceImpl())
|
||||
|
||||
|
@ -63,7 +65,7 @@ class SignInViewController: UIViewController {
|
|||
}()
|
||||
|
||||
private let signInButton: AppButton = {
|
||||
let button = AppButton(label: L("sign_in"), isPrimary: true, target: self, action: #selector(signInTapped))
|
||||
let button = AppButton(label: L("sign_in"), isPrimary: true, target: SignInViewController.self, action: #selector(signInTapped))
|
||||
return button
|
||||
}()
|
||||
|
||||
|
@ -180,6 +182,7 @@ class SignInViewController: UIViewController {
|
|||
|
||||
private func navigateToMain() {
|
||||
signInButton.isLoading = false
|
||||
performSegue(withIdentifier: "SignIn2TourismMain", sender: nil)
|
||||
self.dismiss(animated: true)
|
||||
UserPreferences.shared.setShouldGoToTourismMain(value: true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,7 +93,7 @@ class SignUpViewController: UIViewController {
|
|||
}()
|
||||
|
||||
private let signUpButton: AppButton = {
|
||||
let button = AppButton(label: L("sign_up"), isPrimary: true, target: self, action: #selector(signUpClicked))
|
||||
let button = AppButton(label: L("sign_up"), isPrimary: true, target: SignUpViewController.self, action: #selector(signUpClicked))
|
||||
return button
|
||||
}()
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ class WelcomeViewController: UIViewController {
|
|||
let button = AppButton(
|
||||
label: L("sign_in"),
|
||||
isPrimary: true,
|
||||
target: self,
|
||||
target: WelcomeViewController.self,
|
||||
action: #selector(signInClicked)
|
||||
)
|
||||
return button
|
||||
|
@ -53,7 +53,7 @@ class WelcomeViewController: UIViewController {
|
|||
let button = AppButton(
|
||||
label: L("sign_up"),
|
||||
isPrimary: true,
|
||||
target: self,
|
||||
target: WelcomeViewController.self,
|
||||
action: #selector(signUpClicked)
|
||||
)
|
||||
return button
|
||||
|
|
|
@ -11,10 +11,15 @@ struct LoadImageView: View {
|
|||
ZStack(alignment: .center) {
|
||||
WebImage(url: URL(string: urlString))
|
||||
.onSuccess(perform: { Image, data, cache in
|
||||
self.isError = false
|
||||
// delay is here to avoid any updates during ui update and stop seing messages about it
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||
self.isError = false
|
||||
}
|
||||
})
|
||||
.onFailure(perform: { isError in
|
||||
self.isError = true
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||
self.isError = true
|
||||
}
|
||||
})
|
||||
.resizable()
|
||||
.indicator(.activity)
|
||||
|
|
|
@ -3,8 +3,10 @@ import SwiftUI
|
|||
struct AppTextField: View {
|
||||
@Binding var value: String
|
||||
var hint: String
|
||||
var label: String? = nil
|
||||
var isError: Bool? = nil
|
||||
var textFieldHeight: CGFloat = 50
|
||||
var labelFontSize:CGFloat = 13
|
||||
var hintFontSize: CGFloat = 15
|
||||
var textSize: CGFloat = 17
|
||||
var errorColor: SwiftUI.Color = SwiftUI.Color.red
|
||||
|
@ -37,6 +39,14 @@ struct AppTextField: View {
|
|||
.padding(.top, textFieldHeight / 2)
|
||||
)
|
||||
|
||||
// Label
|
||||
if let label = label {
|
||||
Text(label)
|
||||
.font(.system(size: labelFontSize))
|
||||
.foregroundColor(Color.onBackground)
|
||||
.padding(.bottom, 50)
|
||||
}
|
||||
|
||||
// Hint text
|
||||
Text(hint)
|
||||
.font(.system(size: hintFontSize))
|
||||
|
|
|
@ -9,7 +9,7 @@ class PasswordTextField: AuthTextField {
|
|||
button.setImage(eyeSlashImg, for: .normal)
|
||||
button.setImage(eyeImage, for: .selected)
|
||||
button.tintColor = .white
|
||||
button.addTarget(self, action: #selector(togglePasswordVisibility), for: .touchUpInside)
|
||||
button.addTarget(PasswordTextField.self, action: #selector(togglePasswordVisibility), for: .touchUpInside)
|
||||
button.translatesAutoresizingMaskIntoConstraints = false
|
||||
return button
|
||||
}()
|
||||
|
|
|
@ -21,16 +21,15 @@ class DataSyncer {
|
|||
self.isConnected = path.status == .satisfied
|
||||
self.isExpensive = path.isExpensive
|
||||
|
||||
if path.status == .satisfied {
|
||||
print("Connected to the internet.")
|
||||
self.reviewsRepository.syncReviews()
|
||||
self.placesRepository.syncFavorites()
|
||||
} else {
|
||||
print("No internet connection.")
|
||||
}
|
||||
|
||||
if path.isExpensive {
|
||||
print("Connection is on an expensive network, like cellular.")
|
||||
// delay is here because in the beginning there probably won't be stable connection
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
|
||||
if Reachability.isConnectedToNetwork() {
|
||||
print("Connected to the internet.")
|
||||
self.reviewsRepository.syncReviews()
|
||||
self.placesRepository.syncFavorites()
|
||||
} else {
|
||||
print("No internet connection.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class CategoriesViewModel: ObservableObject {
|
|||
|
||||
func observeCategoryPlaces() {
|
||||
placesRepository.placesByCategoryResource.sink { completion in
|
||||
if case let .failure(error) = completion {
|
||||
if case .failure(_) = completion {
|
||||
// nothing
|
||||
}
|
||||
} receiveValue: { places in
|
||||
|
|
|
@ -20,7 +20,7 @@ class FavoritesViewModel: ObservableObject {
|
|||
|
||||
func observeFavorites() {
|
||||
placesRepository.favoritesResource.sink { completion in
|
||||
if case let .failure(error) = completion {
|
||||
if case .failure(_) = completion {
|
||||
// nothing
|
||||
}
|
||||
} receiveValue: { places in
|
||||
|
|
|
@ -70,22 +70,27 @@ struct PersonalDataScreen: View {
|
|||
showImagePicker = true
|
||||
}
|
||||
}
|
||||
|
||||
VerticalSpace(height: 24)
|
||||
VerticalSpace(height: 36)
|
||||
|
||||
AppTextField(
|
||||
value: $profileVM.fullName,
|
||||
hint: L("full_name")
|
||||
hint: L("full_name"),
|
||||
label: L("full_name")
|
||||
)
|
||||
VerticalSpace(height: 16)
|
||||
|
||||
AppTextField(
|
||||
value: $profileVM.email,
|
||||
hint: L("email")
|
||||
hint: L("email"),
|
||||
label: L("email")
|
||||
)
|
||||
VerticalSpace(height: 24)
|
||||
VerticalSpace(height: 8)
|
||||
|
||||
if let code = profileVM.countryCodeName {
|
||||
Text(L("country"))
|
||||
.font(.system(size: 13))
|
||||
.foregroundColor(Color.onBackground)
|
||||
|
||||
UICountryPickerView(
|
||||
code: code,
|
||||
onCountryChanged: { code in
|
||||
|
@ -93,6 +98,14 @@ struct PersonalDataScreen: View {
|
|||
}
|
||||
)
|
||||
.frame(height: 56)
|
||||
.overlay(
|
||||
// Underline
|
||||
Rectangle()
|
||||
.frame(height: 1)
|
||||
.foregroundColor(Color.onBackground)
|
||||
.padding(.top, 50 / 2)
|
||||
)
|
||||
|
||||
VerticalSpace(height: 32)
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ struct AllPicsScreen: View {
|
|||
}
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.top, UIApplication.shared.statusBarFrame.height)
|
||||
.padding(.top, statusBarHeight())
|
||||
.padding(.bottom, 48)
|
||||
.background(Color.background)
|
||||
.ignoresSafeArea()
|
||||
|
|
|
@ -48,7 +48,7 @@ struct PlaceTopBar: View {
|
|||
)
|
||||
}
|
||||
.padding(.horizontal, padding)
|
||||
.padding(.top, UIApplication.shared.statusBarFrame.height)
|
||||
.padding(.top, statusBarHeight())
|
||||
|
||||
VerticalSpace(height: 32)
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ struct AllReviewsScreen: View {
|
|||
}
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.top, UIApplication.shared.statusBarFrame.height)
|
||||
.padding(.top, statusBarHeight())
|
||||
.padding(.bottom, 48)
|
||||
.background(Color.background)
|
||||
.ignoresSafeArea()
|
||||
|
|
|
@ -19,7 +19,7 @@ class SearchViewModel: ObservableObject {
|
|||
|
||||
func observeSearch() {
|
||||
placesRepository.searchResource.sink { completion in
|
||||
if case let .failure(error) = completion {
|
||||
if case .failure(_) = completion {
|
||||
// nothing
|
||||
}
|
||||
} receiveValue: { places in
|
||||
|
|
|
@ -17,11 +17,14 @@ class TabBarController: UITabBarController {
|
|||
|
||||
// navigation functions
|
||||
let goToCategoriesTab = { self.selectedIndex = 1 }
|
||||
|
||||
// we use dismiss, because we present screens modally
|
||||
let goToMap = {
|
||||
self.dismiss(animated: true)
|
||||
self.dismiss(animated: false)
|
||||
}
|
||||
let goToAuth = {
|
||||
self.performSegue(withIdentifier: "TourismMain2Auth", sender: nil)
|
||||
UserPreferences.shared.setShouldGoToAuth(value: true)
|
||||
self.dismiss(animated: true)
|
||||
}
|
||||
let goToMapAndCreateRoute: (PlaceLocation) -> Void = { location in
|
||||
UserPreferences.shared.setLocation(value: location)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Wns-nH-AQU">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Wns-nH-AQU">
|
||||
<device id="retina6_72" orientation="landscape" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
|
@ -27,7 +27,7 @@
|
|||
<rect key="frame" x="0.0" y="0.0" width="932" height="430"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ixC-IZ-Pvs" userLabel="CarPlayPlaceholderView" customClass="CarplayPlaceholderView" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ixC-IZ-Pvs" userLabel="CarPlayPlaceholderView" customClass="CarplayPlaceholderView" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="430"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
</view>
|
||||
|
@ -38,12 +38,12 @@
|
|||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rL1-9E-4b7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="430"/>
|
||||
<subviews>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="65S-M4-TnM" customClass="NavigationInfoArea" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="337"/>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="65S-M4-TnM" customClass="NavigationInfoArea" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="409"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TdT-ia-GP9">
|
||||
<rect key="frame" x="0.0" y="0.0" width="350" height="396"/>
|
||||
<rect key="frame" x="59" y="0.0" width="350" height="409"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="350" id="XLL-zv-Bym"/>
|
||||
|
@ -59,8 +59,8 @@
|
|||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aVk-ab-LFJ" customClass="TabBarArea" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="348" width="350" height="82"/>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aVk-ab-LFJ" customClass="TabBarArea" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="361" width="350" height="69"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" priority="100" constant="350" id="aj4-lb-h52"/>
|
||||
|
@ -76,24 +76,24 @@
|
|||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="awj-9E-eBS" customClass="PlacePageArea" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="396"/>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="awj-9E-eBS" customClass="PlacePageArea" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="409"/>
|
||||
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FFY-Dy-Wou" customClass="VisibleArea" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="396"/>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FFY-Dy-Wou" customClass="VisibleArea" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="409"/>
|
||||
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NI8-tV-i2B" customClass="WidgetsArea" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="337"/>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NI8-tV-i2B" customClass="WidgetsArea" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="409"/>
|
||||
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xJx-UU-IdV" customClass="SideButtonsArea" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="337"/>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xJx-UU-IdV" customClass="SideButtonsArea" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="409"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QKu-4A-UgP" customClass="TrafficButtonArea" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="337"/>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QKu-4A-UgP" customClass="TrafficButtonArea" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="409"/>
|
||||
<color key="backgroundColor" red="0.0" green="1" blue="0.0" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
</subviews>
|
||||
|
@ -105,8 +105,8 @@
|
|||
<constraint firstItem="FFY-Dy-Wou" firstAttribute="top" secondItem="rL1-9E-4b7" secondAttribute="top" priority="100" id="svT-Vi-vvC"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" placeholderIntrinsicWidth="infinite" placeholderIntrinsicHeight="500" translatesAutoresizingMaskIntoConstraints="NO" id="jio-3T-E6G" customClass="TouchTransparentView" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="350" height="430"/>
|
||||
<view contentMode="scaleToFill" placeholderIntrinsicWidth="infinite" placeholderIntrinsicHeight="500" translatesAutoresizingMaskIntoConstraints="NO" id="jio-3T-E6G" customClass="TouchTransparentView" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="350" height="430"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="350" id="Dd0-x6-7gc">
|
||||
|
@ -134,8 +134,8 @@
|
|||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
<view hidden="YES" contentMode="scaleToFill" placeholderIntrinsicWidth="infinite" placeholderIntrinsicHeight="500" translatesAutoresizingMaskIntoConstraints="NO" id="rbx-Oj-jeo" customClass="TouchTransparentView" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="59" width="350" height="371"/>
|
||||
<view hidden="YES" contentMode="scaleToFill" placeholderIntrinsicWidth="infinite" placeholderIntrinsicHeight="500" translatesAutoresizingMaskIntoConstraints="NO" id="rbx-Oj-jeo" customClass="TouchTransparentView" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="0.0" width="350" height="430"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="350" id="6h8-a6-LWn"/>
|
||||
|
@ -161,8 +161,8 @@
|
|||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="at1-V1-pzl" customClass="TouchTransparentView" customModule="Organic_Maps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="196" width="932" height="152"/>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="at1-V1-pzl" customClass="TouchTransparentView" customModule="Tourism_Map_Tajikistan" customModuleProvider="target">
|
||||
<rect key="frame" x="59" y="209" width="814" height="152"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<gestureRecognizers/>
|
||||
<constraints>
|
||||
|
@ -244,8 +244,8 @@
|
|||
<exclude reference="SAj-bF-qrr"/>
|
||||
<exclude reference="SDX-4J-Jz5"/>
|
||||
<exclude reference="TZk-MH-pMV"/>
|
||||
<exclude reference="u9s-KY-yCt"/>
|
||||
<exclude reference="veF-Rn-BEm"/>
|
||||
<exclude reference="u9s-KY-yCt"/>
|
||||
<exclude reference="W0l-NG-7lt"/>
|
||||
</mask>
|
||||
</variation>
|
||||
|
@ -282,13 +282,13 @@
|
|||
</variation>
|
||||
<variation key="heightClass=regular-widthClass=regular">
|
||||
<mask key="constraints">
|
||||
<include reference="SAj-bF-qrr"/>
|
||||
<exclude reference="t9l-Ud-h6j"/>
|
||||
<include reference="SAj-bF-qrr"/>
|
||||
<exclude reference="9M9-8P-Hzb"/>
|
||||
<include reference="u9s-KY-yCt"/>
|
||||
<exclude reference="5Sh-l6-Icd"/>
|
||||
<exclude reference="9rR-QQ-c1P"/>
|
||||
<include reference="W0l-NG-7lt"/>
|
||||
<exclude reference="5Sh-l6-Icd"/>
|
||||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
|
@ -312,7 +312,7 @@
|
|||
<segue destination="lFr-lA-JTW" kind="show" identifier="PP2BookmarkEditing" id="0A8-4b-0A2"/>
|
||||
<segue destination="Psz-BY-Fy4" kind="presentation" identifier="PP2BookmarkEditingIPAD" modalPresentationStyle="formSheet" id="k6v-a7-5DO"/>
|
||||
<segue destination="DdR-kk-MnB" kind="show" identifier="Map2Settings" id="Uyr-xb-oJc"/>
|
||||
<segue destination="SOp-Vz-BSi" kind="presentation" identifier="Map2TourismMain" modalPresentationStyle="fullScreen" id="ZyV-kc-eXo"/>
|
||||
<segue destination="SOp-Vz-BSi" kind="presentation" identifier="Map2TourismMain" animates="NO" modalPresentationStyle="fullScreen" id="ZyV-kc-eXo"/>
|
||||
<segue destination="6OK-aq-fiY" kind="presentation" identifier="Map2Auth" modalPresentationStyle="fullScreen" id="ZTS-EN-BxZ"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
|
@ -367,7 +367,7 @@
|
|||
<navigationController id="Psz-BY-Fy4" customClass="MWMNavigationController" sceneMemberID="viewController">
|
||||
<value key="contentSizeForViewInPopover" type="size" width="600" height="600"/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="SUN-3A-xgM">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
|
@ -413,7 +413,7 @@
|
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="X1H-IB-Nv1">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="293"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="365"/>
|
||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="PressBackground"/>
|
||||
|
@ -424,10 +424,10 @@
|
|||
</connections>
|
||||
</tableView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aQv-7U-zAP">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="293"/>
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="365"/>
|
||||
<subviews>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="PrH-u2-IEv" userLabel="Editor View" customClass="MWMTextView">
|
||||
<rect key="frame" x="0.0" y="36" width="932" height="88"/>
|
||||
<rect key="frame" x="0.0" y="36" width="814" height="88"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="88" id="oAE-yX-hVe"/>
|
||||
|
@ -444,7 +444,7 @@
|
|||
</connections>
|
||||
</textView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="separator_image" translatesAutoresizingMaskIntoConstraints="NO" id="z2Z-G2-Np7">
|
||||
<rect key="frame" x="0.0" y="35" width="932" height="1"/>
|
||||
<rect key="frame" x="0.0" y="35" width="814" height="1"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="xUX-ck-MQb"/>
|
||||
</constraints>
|
||||
|
@ -453,7 +453,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="separator_image" translatesAutoresizingMaskIntoConstraints="NO" id="ebA-fW-ddJ">
|
||||
<rect key="frame" x="0.0" y="123" width="932" height="1"/>
|
||||
<rect key="frame" x="0.0" y="123" width="814" height="1"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="HOj-tZ-b3F"/>
|
||||
</constraints>
|
||||
|
@ -462,7 +462,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="separator_image" translatesAutoresizingMaskIntoConstraints="NO" id="5T5-Pp-hb5">
|
||||
<rect key="frame" x="0.0" y="248" width="932" height="1"/>
|
||||
<rect key="frame" x="0.0" y="320" width="814" height="1"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="ZXK-zv-uSz"/>
|
||||
</constraints>
|
||||
|
@ -471,7 +471,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="separator_image" translatesAutoresizingMaskIntoConstraints="NO" id="IX2-yp-0oa">
|
||||
<rect key="frame" x="0.0" y="164" width="932" height="1"/>
|
||||
<rect key="frame" x="0.0" y="164" width="814" height="1"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="rD4-fE-ez2"/>
|
||||
</constraints>
|
||||
|
@ -480,10 +480,10 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="85Z-MR-kUV" userLabel="Help View">
|
||||
<rect key="frame" x="0.0" y="164" width="932" height="328"/>
|
||||
<rect key="frame" x="0.0" y="164" width="814" height="328"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n79-h1-Nk3" userLabel="Button">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="814" height="44"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Example values" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="120" translatesAutoresizingMaskIntoConstraints="NO" id="dAM-iT-fzu">
|
||||
<rect key="frame" x="16.000000000000007" y="12" width="117.66666666666669" height="20"/>
|
||||
|
@ -496,7 +496,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_arrow_gray_down" translatesAutoresizingMaskIntoConstraints="NO" id="m7d-sG-5LN">
|
||||
<rect key="frame" x="900" y="10" width="24" height="24"/>
|
||||
<rect key="frame" x="782" y="10" width="24" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="24" id="2aF-WV-ER2"/>
|
||||
<constraint firstAttribute="width" constant="24" id="eak-KY-Xaa"/>
|
||||
|
@ -506,7 +506,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="separator_image" translatesAutoresizingMaskIntoConstraints="NO" id="Suj-t5-ZWs">
|
||||
<rect key="frame" x="16" y="44" width="916" height="1"/>
|
||||
<rect key="frame" x="16" y="44" width="798" height="1"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="cv8-Tg-Oin"/>
|
||||
</constraints>
|
||||
|
@ -515,7 +515,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MiP-Du-s3i">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="44"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="814" height="44"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<connections>
|
||||
<action selector="toggleExample" destination="Ld6-gM-2hk" eventType="touchUpInside" id="BGK-Ap-YBq"/>
|
||||
|
@ -542,7 +542,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="j5R-JF-iCs">
|
||||
<rect key="frame" x="10" y="56" width="912" height="260"/>
|
||||
<rect key="frame" x="10" y="56" width="794" height="260"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" priority="750" constant="260" id="sfy-fK-VSx"/>
|
||||
|
@ -588,7 +588,7 @@
|
|||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SZQ-ra-FC3" userLabel="Mode Switch">
|
||||
<rect key="frame" x="0.0" y="352" width="932" height="44"/>
|
||||
<rect key="frame" x="0.0" y="365" width="932" height="44"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fB1-w2-lJI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="44"/>
|
||||
|
@ -688,7 +688,7 @@
|
|||
<rect key="frame" x="0.0" y="50" width="932" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="RXe-xp-xlR" id="g0x-Vt-1FI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="44"/>
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="JcK-nR-UGw">
|
||||
|
@ -747,7 +747,7 @@
|
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="JbV-y9-HBo">
|
||||
<rect key="frame" x="0.0" y="115" width="932" height="281"/>
|
||||
<rect key="frame" x="0.0" y="56" width="932" height="353"/>
|
||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="TableView:PressBackground"/>
|
||||
|
@ -758,7 +758,7 @@
|
|||
</connections>
|
||||
</tableView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rI9-RR-sKP" userLabel="Status Bar Background">
|
||||
<rect key="frame" x="0.0" y="7" width="932" height="108"/>
|
||||
<rect key="frame" x="0.0" y="-52" width="932" height="108"/>
|
||||
<color key="backgroundColor" red="0.1215686275" green="0.59999999999999998" blue="0.32156862749999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
|
@ -769,7 +769,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<searchBar contentMode="redraw" translatesAutoresizingMaskIntoConstraints="NO" id="gzF-B7-8pj">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="56"/>
|
||||
<rect key="frame" x="59" y="0.0" width="873" height="56"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="44" id="2uI-k6-ahr"/>
|
||||
|
@ -818,7 +818,7 @@
|
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="interactive" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="ina-WD-kps">
|
||||
<rect key="frame" x="0.0" y="115" width="932" height="281"/>
|
||||
<rect key="frame" x="0.0" y="56" width="932" height="353"/>
|
||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="TableView:PressBackground"/>
|
||||
|
@ -829,7 +829,7 @@
|
|||
</connections>
|
||||
</tableView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HEU-Bu-3wh" userLabel="Status Bar Background">
|
||||
<rect key="frame" x="0.0" y="7" width="932" height="108"/>
|
||||
<rect key="frame" x="0.0" y="-52" width="932" height="108"/>
|
||||
<color key="backgroundColor" red="0.1215686275" green="0.59999999999999998" blue="0.32156862749999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
|
@ -840,7 +840,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<searchBar contentMode="redraw" translatesAutoresizingMaskIntoConstraints="NO" id="z6s-26-dP6">
|
||||
<rect key="frame" x="0.0" y="59" width="932" height="56"/>
|
||||
<rect key="frame" x="59" y="0.0" width="814" height="56"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="44" id="UAk-z1-2EY"/>
|
||||
|
@ -906,7 +906,7 @@
|
|||
</connections>
|
||||
</containerView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CDj-ol-HRP">
|
||||
<rect key="frame" x="0.0" y="332" width="932" height="98"/>
|
||||
<rect key="frame" x="0.0" y="345" width="932" height="85"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="PressBackground"/>
|
||||
|
@ -953,13 +953,13 @@
|
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Gmw-e3-n53" userLabel="Container" customClass="MWMNoMapsView">
|
||||
<rect key="frame" x="258.33333333333326" y="59" width="415.66666666666674" height="312"/>
|
||||
<rect key="frame" x="258.33333333333326" y="0.0" width="415.66666666666674" height="409"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dCZ-PN-2Ob" userLabel="BoundsView">
|
||||
<rect key="frame" x="16" y="0.0" width="383.66666666666669" height="312"/>
|
||||
<rect key="frame" x="16" y="0.0" width="383.66666666666669" height="409"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="87G-jh-N8H" userLabel="CenteredView">
|
||||
<rect key="frame" x="0.0" y="101.33333333333334" width="383.66666666666669" height="109.66666666666666"/>
|
||||
<rect key="frame" x="0.0" y="149.66666666666666" width="383.66666666666669" height="109.66666666666666"/>
|
||||
<subviews>
|
||||
<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="abh-G0-Alr" userLabel="Title">
|
||||
<rect key="frame" x="0.0" y="40" width="383.66666666666669" height="24"/>
|
||||
|
@ -1030,7 +1030,7 @@
|
|||
</connections>
|
||||
</view>
|
||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Moj-UK-oyl" userLabel="DownloadMaps" customClass="MWMButton">
|
||||
<rect key="frame" x="346" y="312" width="240" height="44"/>
|
||||
<rect key="frame" x="346" y="325" width="240" height="44"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="240" id="49x-bx-JJj"/>
|
||||
|
@ -1073,13 +1073,13 @@
|
|||
<!--Search No Results View Controller-->
|
||||
<scene sceneID="LUt-iU-iyq">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="SearchNoResultsViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="0VQ-EO-9Sv" customClass="SearchNoResultsViewController" customModule="Organic_Maps" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<viewController storyboardIdentifier="SearchNoResultsViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="0VQ-EO-9Sv" customClass="SearchNoResultsViewController" customModule="Tourism_Map_Tajikistan" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="9jm-RW-DZK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="430"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EbW-Mp-c6s">
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="396"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="932" height="409"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" secondItem="EbW-Mp-c6s" secondAttribute="height" multiplier="1:1" id="tBC-sb-Q3g"/>
|
||||
|
|
Loading…
Add table
Reference in a new issue