Repo created
This commit is contained in:
parent
4af19165ec
commit
68073add76
12458 changed files with 12350765 additions and 2 deletions
|
|
@ -0,0 +1,47 @@
|
|||
import UIKit
|
||||
|
||||
class BottomMenuItemCell: UITableViewCell {
|
||||
@IBOutlet private var label: UILabel!
|
||||
@IBOutlet private var badgeBackground: UIView!
|
||||
@IBOutlet private var badgeCountLabel: UILabel!
|
||||
@IBOutlet private var separator: UIView!
|
||||
@IBOutlet private var icon: UIImageView!
|
||||
@IBOutlet private var badgeSpacingConstraint: NSLayoutConstraint!
|
||||
@IBOutlet private var badgeBackgroundWidthConstraint: NSLayoutConstraint!
|
||||
var anchorView: UIView {
|
||||
get {
|
||||
return icon
|
||||
}
|
||||
}
|
||||
|
||||
private(set) var isEnabled: Bool = true
|
||||
|
||||
func configure(imageName: String, title: String, badgeCount: UInt = .zero, enabled: Bool = true) {
|
||||
if imageName == "help" {
|
||||
icon.image = Settings.LeftButtonType.help.image
|
||||
} else if imageName == "plus" {
|
||||
icon.image = Settings.LeftButtonType.addPlace.image
|
||||
} else if imageName == "track" {
|
||||
icon.image = Settings.LeftButtonType.recordTrack.image
|
||||
} else if imageName == "ic_menu_download" || imageName == "ic_menu_donate" {
|
||||
icon.image = UIImage(named: imageName)
|
||||
} else {
|
||||
let configuration = UIImage.SymbolConfiguration(pointSize: 22, weight: .semibold)
|
||||
icon.image = UIImage(systemName: imageName, withConfiguration: configuration)!
|
||||
}
|
||||
|
||||
label.text = title
|
||||
badgeBackground.isHidden = badgeCount == 0
|
||||
badgeCountLabel.text = "\(badgeCount)"
|
||||
if badgeCount == 0 {
|
||||
badgeSpacingConstraint.constant = 0
|
||||
badgeBackgroundWidthConstraint.constant = 0
|
||||
} else {
|
||||
badgeSpacingConstraint.constant = 8
|
||||
badgeBackgroundWidthConstraint.constant = 32
|
||||
}
|
||||
isEnabled = enabled
|
||||
icon.setStyleAndApply(isEnabled ? .black : .gray)
|
||||
label.setFontStyleAndApply(isEnabled ? .blackPrimary : .blackHint)
|
||||
}
|
||||
}
|
||||
107
iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuItemCell.xib
Normal file
107
iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuItemCell.xib
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="48" id="gZi-cd-LgO" customClass="BottomMenuItemCell" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="gZi-cd-LgO" id="rsu-1s-Lsp">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="48"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_menu_download" translatesAutoresizingMaskIntoConstraints="NO" id="8oJ-8z-qRL">
|
||||
<rect key="frame" x="16" y="10" width="28" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="28" id="Hth-JK-nv2"/>
|
||||
<constraint firstAttribute="height" constant="28" id="zil-Ys-XYB"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="MWMBlack"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Uc-o1-PsF">
|
||||
<rect key="frame" x="60" y="14" width="298" height="20"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="regular16:blackPrimaryText"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="con-tP-3dJ" userLabel="DownloadBadgeBackground">
|
||||
<rect key="frame" x="366" y="14" width="32" height="20"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FT9-8n-RZm" userLabel="DownloadBadgeCount">
|
||||
<rect key="frame" x="0.0" y="0.0" width="32" height="20"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="FT9-8n-RZm" secondAttribute="trailing" id="Ge3-P2-idS"/>
|
||||
<constraint firstAttribute="bottom" secondItem="FT9-8n-RZm" secondAttribute="bottom" id="Kgn-y3-dBT"/>
|
||||
<constraint firstItem="FT9-8n-RZm" firstAttribute="top" secondItem="con-tP-3dJ" secondAttribute="top" id="LaN-Vb-w2N"/>
|
||||
<constraint firstAttribute="height" constant="20" id="Y5v-7h-SGf"/>
|
||||
<constraint firstItem="FT9-8n-RZm" firstAttribute="leading" secondItem="con-tP-3dJ" secondAttribute="leading" id="pE4-Qs-ctY"/>
|
||||
<constraint firstAttribute="width" constant="32" id="ubK-0L-pDn"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="Badge"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4OJ-wN-dY4" userLabel="Separator">
|
||||
<rect key="frame" x="60" y="47" width="354" height="1"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="tDM-AP-ern"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="Divider"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="5Uc-o1-PsF" firstAttribute="leading" secondItem="4OJ-wN-dY4" secondAttribute="leading" id="9g1-Uo-zCa"/>
|
||||
<constraint firstAttribute="bottom" secondItem="8oJ-8z-qRL" secondAttribute="bottom" constant="10" id="KJP-IG-4FK"/>
|
||||
<constraint firstItem="FT9-8n-RZm" firstAttribute="leading" secondItem="5Uc-o1-PsF" secondAttribute="trailing" constant="8" id="RJA-NS-MXP"/>
|
||||
<constraint firstItem="8oJ-8z-qRL" firstAttribute="top" secondItem="rsu-1s-Lsp" secondAttribute="top" constant="10" id="bab-2f-YZY"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="4OJ-wN-dY4" secondAttribute="trailing" id="3Vq-qn-yhm"/>
|
||||
<constraint firstItem="4OJ-wN-dY4" firstAttribute="leading" secondItem="gZi-cd-LgO" secondAttribute="leading" constant="60" id="7wy-Q8-lja"/>
|
||||
<constraint firstAttribute="trailing" secondItem="con-tP-3dJ" secondAttribute="trailing" constant="16" id="Bm7-vh-vYz"/>
|
||||
<constraint firstItem="8oJ-8z-qRL" firstAttribute="leading" secondItem="gZi-cd-LgO" secondAttribute="leading" constant="16" id="I7K-bz-QOC"/>
|
||||
<constraint firstAttribute="bottom" secondItem="4OJ-wN-dY4" secondAttribute="bottom" id="SVQ-VP-J4d"/>
|
||||
<constraint firstItem="con-tP-3dJ" firstAttribute="centerY" secondItem="gZi-cd-LgO" secondAttribute="centerY" id="UY4-uw-Kda"/>
|
||||
<constraint firstItem="5Uc-o1-PsF" firstAttribute="centerY" secondItem="gZi-cd-LgO" secondAttribute="centerY" id="hVt-zE-3iE"/>
|
||||
<constraint firstItem="8oJ-8z-qRL" firstAttribute="centerY" secondItem="gZi-cd-LgO" secondAttribute="centerY" id="u2b-9I-SLh"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="badgeBackground" destination="con-tP-3dJ" id="vH5-Rd-uqS"/>
|
||||
<outlet property="badgeBackgroundWidthConstraint" destination="ubK-0L-pDn" id="D3B-sV-eGO"/>
|
||||
<outlet property="badgeCountLabel" destination="FT9-8n-RZm" id="HLY-2S-do9"/>
|
||||
<outlet property="badgeSpacingConstraint" destination="RJA-NS-MXP" id="Hpf-eq-1C1"/>
|
||||
<outlet property="icon" destination="8oJ-8z-qRL" id="qcD-Kv-c5l"/>
|
||||
<outlet property="label" destination="5Uc-o1-PsF" id="y4l-b6-MCt"/>
|
||||
<outlet property="separator" destination="4OJ-wN-dY4" id="Kkv-HO-0eK"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="337.68115942028987" y="527.00892857142856"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="ic_menu_download" width="28" height="28"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
final class BottomMenuLayerButton: VerticallyAlignedButton {
|
||||
private var badgeView: UIView?
|
||||
private let badgeSize = CGSize(width: 12, height: 12)
|
||||
private let badgeOffset = CGPoint(x: -3, y: 3)
|
||||
|
||||
var isBadgeHidden: Bool = true{
|
||||
didSet {
|
||||
if oldValue != isBadgeHidden {
|
||||
updateBadge()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func layoutSubviews() {
|
||||
super.layoutSubviews()
|
||||
imageView.layer.masksToBounds = true
|
||||
updateBadge()
|
||||
}
|
||||
|
||||
private func updateBadge() {
|
||||
if isBadgeHidden {
|
||||
badgeView?.removeFromSuperview()
|
||||
badgeView = nil
|
||||
} else {
|
||||
if badgeView == nil {
|
||||
badgeView = UIView()
|
||||
badgeView?.setStyle(.badge)
|
||||
addSubview(badgeView!)
|
||||
}
|
||||
let imageFrame = imageView.frame
|
||||
badgeView?.frame = CGRect(x:imageFrame.minX + imageFrame.width - badgeSize.width / 2 + badgeOffset.x,
|
||||
y:imageFrame.minY - badgeSize.height/2 + badgeOffset.y,
|
||||
width: badgeSize.width,
|
||||
height: badgeSize.height)
|
||||
}
|
||||
}
|
||||
}
|
||||
107
iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuLayersCell.swift
Normal file
107
iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuLayersCell.swift
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
import UIKit
|
||||
|
||||
class BottomMenuLayersCell: UITableViewCell {
|
||||
@IBOutlet weak var closeButton: CircleImageButton!
|
||||
|
||||
@IBOutlet private var subwayButton: BottomMenuLayerButton! {
|
||||
didSet {
|
||||
updateSubwayButton()
|
||||
}
|
||||
}
|
||||
@IBOutlet private var isoLinesButton: BottomMenuLayerButton! {
|
||||
didSet {
|
||||
updateIsoLinesButton()
|
||||
}
|
||||
}
|
||||
@IBOutlet private var outdoorButton: BottomMenuLayerButton! {
|
||||
didSet {
|
||||
updateOutdoorButton()
|
||||
}
|
||||
}
|
||||
|
||||
var onClose: (()->())?
|
||||
|
||||
override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
MapOverlayManager.add(self)
|
||||
closeButton.setImage(UIImage(named: "ic_close"))
|
||||
setupButtons()
|
||||
}
|
||||
|
||||
private func setupButtons() {
|
||||
outdoorButton.setupWith(image: UIImage(resource: .btnMenuOutdoors), text: L("button_layer_outdoor"))
|
||||
isoLinesButton.setupWith(image: UIImage(resource: .btnMenuIsomaps), text: L("button_layer_isolines"))
|
||||
subwayButton.setupWith(image: UIImage(resource: .btnMenuSubway), text: L("button_layer_subway"))
|
||||
}
|
||||
|
||||
deinit {
|
||||
MapOverlayManager.remove(self)
|
||||
}
|
||||
|
||||
override func setSelected(_ selected: Bool, animated: Bool) {
|
||||
super.setSelected(selected, animated: animated)
|
||||
}
|
||||
|
||||
private func updateSubwayButton() {
|
||||
let enabled = MapOverlayManager.transitEnabled()
|
||||
subwayButton.setStyleAndApply(styleFor(enabled))
|
||||
}
|
||||
|
||||
private func updateIsoLinesButton() {
|
||||
let enabled = MapOverlayManager.isoLinesEnabled()
|
||||
isoLinesButton.setStyleAndApply(styleFor(enabled))
|
||||
}
|
||||
|
||||
private func updateOutdoorButton() {
|
||||
let enabled = MapOverlayManager.outdoorEnabled()
|
||||
outdoorButton.setStyleAndApply(styleFor(enabled))
|
||||
}
|
||||
|
||||
@IBAction func onCloseButtonPressed(_ sender: Any) {
|
||||
onClose?()
|
||||
}
|
||||
|
||||
@IBAction func onSubwayButton(_ sender: Any) {
|
||||
let enable = !MapOverlayManager.transitEnabled()
|
||||
MapOverlayManager.setTransitEnabled(enable)
|
||||
}
|
||||
|
||||
@IBAction func onIsoLinesButton(_ sender: Any) {
|
||||
let enable = !MapOverlayManager.isoLinesEnabled()
|
||||
MapOverlayManager.setIsoLinesEnabled(enable)
|
||||
}
|
||||
|
||||
@IBAction func onOutdoorButton(_ sender: Any) {
|
||||
let enable = !MapOverlayManager.outdoorEnabled()
|
||||
MapOverlayManager.setOutdoorEnabled(enable)
|
||||
}
|
||||
}
|
||||
|
||||
extension BottomMenuLayersCell: MapOverlayManagerObserver {
|
||||
func onTransitStateUpdated() {
|
||||
updateSubwayButton()
|
||||
}
|
||||
|
||||
func onIsoLinesStateUpdated() {
|
||||
updateIsoLinesButton()
|
||||
}
|
||||
|
||||
func onOutdoorStateUpdated() {
|
||||
updateOutdoorButton()
|
||||
}
|
||||
}
|
||||
|
||||
private extension BottomMenuLayersCell {
|
||||
func styleFor(_ enabled: Bool) -> MapStyleSheet {
|
||||
enabled ? .mapMenuButtonEnabled : .mapMenuButtonDisabled
|
||||
}
|
||||
}
|
||||
|
||||
private extension BottomMenuLayerButton {
|
||||
func setupWith(image: UIImage, text: String) {
|
||||
self.image = image
|
||||
spacing = 10
|
||||
numberOfLines = 2
|
||||
localizedText = text
|
||||
}
|
||||
}
|
||||
151
iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuLayersCell.xib
Normal file
151
iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuLayersCell.xib
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="ipad9_7" orientation="landscape" layout="fullscreen" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" rowHeight="165" id="KGk-i7-Jjw" customClass="BottomMenuLayersCell" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="340" height="165"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="340" height="165"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W1i-v6-zbz">
|
||||
<rect key="frame" x="0.0" y="0.0" width="340" height="50"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Map Layers" textAlignment="natural" lineBreakMode="clip" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vuk-dn-n2c">
|
||||
<rect key="frame" x="119.5" y="13" width="101.5" height="24"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="20"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="styleName" value="blackPrimaryText:bold22"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="layers_title"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2xW-dK-D9y" customClass="CircleImageButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="296" y="11" width="28" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="28" id="BD2-bz-n13"/>
|
||||
<constraint firstAttribute="width" constant="28" id="Thu-MY-dQm"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<action selector="onCloseButtonPressed:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="8vd-Pg-Suh"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="00h-1i-skR"/>
|
||||
<constraint firstItem="2xW-dK-D9y" firstAttribute="leading" secondItem="Vuk-dn-n2c" secondAttribute="trailing" constant="8" id="4PG-Fm-yqS"/>
|
||||
<constraint firstItem="Vuk-dn-n2c" firstAttribute="centerY" secondItem="W1i-v6-zbz" secondAttribute="centerY" id="4du-pr-7hv"/>
|
||||
<constraint firstAttribute="height" constant="45" id="Ez1-s5-1EO"/>
|
||||
<constraint firstItem="Vuk-dn-n2c" firstAttribute="centerX" secondItem="W1i-v6-zbz" secondAttribute="centerX" id="XEG-CK-41Y"/>
|
||||
<constraint firstItem="Vuk-dn-n2c" firstAttribute="leading" secondItem="W1i-v6-zbz" secondAttribute="leading" constant="16" id="kSJ-Wa-nYA"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2xW-dK-D9y" secondAttribute="trailing" constant="16" id="kae-50-2nG"/>
|
||||
<constraint firstItem="2xW-dK-D9y" firstAttribute="centerY" secondItem="Vuk-dn-n2c" secondAttribute="centerY" id="wCu-O0-cz8"/>
|
||||
</constraints>
|
||||
<variation key="default">
|
||||
<mask key="constraints">
|
||||
<exclude reference="00h-1i-skR"/>
|
||||
<exclude reference="Ez1-s5-1EO"/>
|
||||
<exclude reference="XEG-CK-41Y"/>
|
||||
</mask>
|
||||
</variation>
|
||||
<variation key="heightClass=compact">
|
||||
<mask key="constraints">
|
||||
<include reference="Ez1-s5-1EO"/>
|
||||
</mask>
|
||||
</variation>
|
||||
<variation key="heightClass=regular">
|
||||
<mask key="constraints">
|
||||
<include reference="00h-1i-skR"/>
|
||||
</mask>
|
||||
</variation>
|
||||
<variation key="heightClass=regular-widthClass=regular">
|
||||
<mask key="constraints">
|
||||
<include reference="XEG-CK-41Y"/>
|
||||
<exclude reference="kSJ-Wa-nYA"/>
|
||||
<exclude reference="4PG-Fm-yqS"/>
|
||||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="sRd-zd-xSl">
|
||||
<rect key="frame" x="16" y="58" width="308" height="64"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="g13-pK-Eig" userLabel="Outdoor Button" customClass="BottomMenuLayerButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="102.5" height="64"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<connections>
|
||||
<action selector="onOutdoorButton:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="UQ2-jj-fPc"/>
|
||||
</connections>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="edA-Mo-3Vx" customClass="BottomMenuLayerButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="102.5" y="0.0" width="103" height="64"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<connections>
|
||||
<action selector="onIsoLinesButton:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="3LS-C2-2Mc"/>
|
||||
</connections>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4US-fZ-cyg" customClass="BottomMenuLayerButton" customModule="CoMaps" customModuleProvider="target">
|
||||
<rect key="frame" x="205.5" y="0.0" width="102.5" height="64"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<connections>
|
||||
<action selector="onSubwayButton:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="xxM-kP-gT1"/>
|
||||
</connections>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="70" id="d0H-kE-IWx"/>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="500" id="nea-IB-ZkL"/>
|
||||
<constraint firstAttribute="height" constant="64" id="t9j-kf-yze"/>
|
||||
</constraints>
|
||||
<variation key="default">
|
||||
<mask key="constraints">
|
||||
<exclude reference="d0H-kE-IWx"/>
|
||||
<exclude reference="t9j-kf-yze"/>
|
||||
</mask>
|
||||
</variation>
|
||||
<variation key="heightClass=compact">
|
||||
<mask key="constraints">
|
||||
<include reference="d0H-kE-IWx"/>
|
||||
</mask>
|
||||
</variation>
|
||||
<variation key="heightClass=regular">
|
||||
<mask key="constraints">
|
||||
<include reference="t9j-kf-yze"/>
|
||||
</mask>
|
||||
</variation>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="W1i-v6-zbz" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="6Tm-PS-VWZ"/>
|
||||
<constraint firstItem="sRd-zd-xSl" firstAttribute="centerX" secondItem="W1i-v6-zbz" secondAttribute="centerX" id="7AE-Qf-1L3"/>
|
||||
<constraint firstAttribute="trailing" secondItem="W1i-v6-zbz" secondAttribute="trailing" id="7ka-f7-sqc"/>
|
||||
<constraint firstItem="sRd-zd-xSl" firstAttribute="top" secondItem="W1i-v6-zbz" secondAttribute="bottom" constant="8" id="PTe-W7-QnR"/>
|
||||
<constraint firstItem="W1i-v6-zbz" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="RLh-Jr-7dm"/>
|
||||
<constraint firstAttribute="trailing" secondItem="sRd-zd-xSl" secondAttribute="trailing" priority="750" constant="16" id="Z8f-X6-r4N"/>
|
||||
<constraint firstItem="sRd-zd-xSl" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" priority="750" constant="16" id="hJE-fg-IEX"/>
|
||||
<constraint firstAttribute="bottom" secondItem="sRd-zd-xSl" secondAttribute="bottom" constant="26" id="iwo-vC-EI9"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="njF-e1-oar"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<connections>
|
||||
<outlet property="closeButton" destination="2xW-dK-D9y" id="RQI-hb-JpS"/>
|
||||
<outlet property="isoLinesButton" destination="edA-Mo-3Vx" id="qoC-8w-EqY"/>
|
||||
<outlet property="outdoorButton" destination="g13-pK-Eig" id="ib1-aw-Qv9"/>
|
||||
<outlet property="subwayButton" destination="4US-fZ-cyg" id="eQB-HR-Wgl"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="137.6953125" y="201.953125"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
Loading…
Add table
Add a link
Reference in a new issue