StackView постоянная ширина подпредставления - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь добавить 7 значений оси X на график.Я пытаюсь сделать это, используя горизонтальный вид в стеке с 7 метками внутри, а затем программно настраивая содержимое каждой метки (подпредставления).

Но я не могу заставить эти метки оставаться в нужных местах.В зависимости от значений, некоторые метки иногда шире, иногда уже, кажется, что интервал меняется и т. Д. (Похоже, что для параметра «Распределение» равным «Заполнить одинаково» они располагаются равномерно, но их ширина становится слишком узкой, показывая только десятичную точку ицифра сразу слева от нее.)

Каждое значение (метка или текстовое поле) - это число, которое будет иметь десятичную точку плюс две-пять цифр (например, 1,0, 3,45, 678,92).

Каждое подпредставление должно иметь одинаковую ширину независимо от содержимого и оставаться по центру ниже соответствующей линии сетки с минимальным интервалом между ними.

Например, есть ли способ обеспечить постоянную ширину каждой метки45 и каждый пробел между ними до ширины 2, независимо от того, является ли содержимое метки 1,1 или 2345,9?

(И, поскольку я новичок в Swift, есть ли причина использовать метку противтекстовое поле?)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Если вы хотите, чтобы ваши метки имели постоянную ширину 45 и интервал 2 ... у вас есть 7 меток + 6 "пробелов":

(7 * 45) + (6 * 2) = 327

Итак, если вы даете горизонтальный вид стекаОграничение ширины 327 и Распределение установлены на Fill Equally, вы получите желаемый результат:

enter image description here

Как вы, вероятно, уже заметили, чтобы поместить значение, такое как ваш пример 678.92, в метку шириной 45, вам нужно использовать довольно маленький шрифт (я использовал System 12).

Вот раскадровка, чтобы вы могли видетьдля себя:

<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina4_7" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="NQ7-zI-PK9">
            <objects>
                <viewController id="CCM-nn-BIf" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="C1V-ar-DQI">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="top" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="vuE-Tw-FZh">
                                <rect key="frame" x="24" y="327" width="327" height="14.5"/>
                                <subviews>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pyl-0P-Y2W">
                                        <rect key="frame" x="0.0" y="0.0" width="45" height="14.5"/>
                                        <color key="backgroundColor" red="1" green="0.83234566450000003" blue="0.47320586440000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2.4" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="we3-YL-c5s">
                                        <rect key="frame" x="47" y="0.0" width="45" height="14.5"/>
                                        <color key="backgroundColor" red="1" green="0.83234566450000003" blue="0.47320586440000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3.8" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Aj1-ad-r0E">
                                        <rect key="frame" x="94" y="0.0" width="45" height="14.5"/>
                                        <color key="backgroundColor" red="1" green="0.83234566450000003" blue="0.47320586440000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="8.75" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qnr-KX-c2b">
                                        <rect key="frame" x="141" y="0.0" width="45" height="14.5"/>
                                        <color key="backgroundColor" red="1" green="0.83234566450000003" blue="0.47320586440000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10.3" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hiY-qQ-iUG">
                                        <rect key="frame" x="188" y="0.0" width="45" height="14.5"/>
                                        <color key="backgroundColor" red="1" green="0.83234566450000003" blue="0.47320586440000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="22.44" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oUW-RY-903">
                                        <rect key="frame" x="235" y="0.0" width="45" height="14.5"/>
                                        <color key="backgroundColor" red="1" green="0.83234566450000003" blue="0.47320586440000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="678.92" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wa7-Qj-2h9">
                                        <rect key="frame" x="282" y="0.0" width="45" height="14.5"/>
                                        <color key="backgroundColor" red="1" green="0.83234566450000003" blue="0.47320586440000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                        <nil key="textColor"/>
                                        <nil key="highlightedColor"/>
                                    </label>
                                </subviews>
                                <constraints>
                                    <constraint firstAttribute="width" constant="327" id="DsZ-ie-6Cr"/>
                                </constraints>
                            </stackView>
                        </subviews>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        <constraints>
                            <constraint firstItem="vuE-Tw-FZh" firstAttribute="centerY" secondItem="C1V-ar-DQI" secondAttribute="centerY" id="Xea-Fp-KaS"/>
                            <constraint firstItem="vuE-Tw-FZh" firstAttribute="centerX" secondItem="C1V-ar-DQI" secondAttribute="centerX" id="hTu-m6-hK6"/>
                        </constraints>
                        <viewLayoutGuide key="safeArea" id="ktE-hH-kAz"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="ulR-Rg-tMI" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="41" y="16"/>
        </scene>
    </scenes>
</document>

Редактировать:

Другой вариант: задать для одной метки ограничение ширины 45, установить представление стека Distribution: Fill Equally / Spacing: 2, но не ограничивать ширину представления стека.

0 голосов
/ 27 ноября 2018

Я пытался воссоздать вашу ситуацию, но все работает правильно.Итак, попробуйте мои шаги:

  • создать 7 меток по вертикали с вашим контентом (например, 1.09, 1.12345, ...)
  • внедрить их в представление стека
  • убедитесь, что свойства вида стека: вертикальная ось, выравнивание и распределение - «заливка», интервал - 2 (по вашему выбору)
  • Наконец, добавьте ограничения ширины к 45 (по вашему выбору), вертикальные и горизонтальныеограничения

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...