View Controller不遵守XIB自动调整大小蒙版

在XIB类型中创建了一个UIView子类CustomUIView: UIView它包含多个出口,每个出口都使用自动调整大小(不自动布局)约束。

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

该XIB的视图按如下方式加载:

// In CustomUIView class

  // Initializer used by Interface Builder.
  required init?(coder: NSCoder) {
    super.init(coder: coder)
    initialize()
  }

  func initialize() {
    // Load the view
    let contentView = // typical func to load view from NIB. Owner argument is self. 
    addSubview(contentView)
   }

将此CustomUIView添加到如下所示的视图控制器中: 在此处输入图片说明

问题是视图控制器的视图不遵守XIB中定义的自动调整大小参数。

在此处输入图片说明

现在,从理论上讲,可以告诉视图控制器的视图,clip to bounds但这不是适当的解决方案。我想念什么?

唐马格

看不到更多细节很难说,但是...

这是一个对我有用的示例(非常接近您显示的布局):

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

在Storyboard中的布局方式:

在此处输入图片说明

结果:

在此处输入图片说明

旋转(以显示自动调整大小):

在此处输入图片说明


TwoLabelView.swift类:

class TwoLabelView: UIView {

    @IBOutlet var contentView: UIView!
    @IBOutlet var topLabel: UILabel!
    @IBOutlet var botLabel: UILabel!

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }

    func setup() {
        let nib = UINib(nibName: "TwoLabelView", bundle: nil)
        nib.instantiate(withOwner: self, options: nil)
        addSubview(contentView)

        contentView.frame = self.bounds

    }
}

并且,源于TwoLabelView.xib文件:

<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina4_7" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/>
        <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" customClass="TwoLabelView" customModule="scratchy" customModuleProvider="target">
            <connections>
                <outlet property="botLabel" destination="AKB-d8-jMk" id="QpL-mN-x4M"/>
                <outlet property="contentView" destination="iN0-l3-epB" id="klb-G5-hj6"/>
                <outlet property="topLabel" destination="btE-jS-Ur5" id="LkK-0w-J4z"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="iN0-l3-epB">
            <rect key="frame" x="0.0" y="0.0" width="233" height="71"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="btE-jS-Ur5">
                    <rect key="frame" x="16" y="8" width="197" height="21"/>
                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
                    <color key="backgroundColor" red="0.79527050256729126" green="0.96349185705184937" blue="0.73112398386001587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
                </label>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AKB-d8-jMk">
                    <rect key="frame" x="16" y="37" width="197" height="21"/>
                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
                    <color key="backgroundColor" red="0.0" green="0.47790580987930298" blue="0.99864691495895386" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
                </label>
            </subviews>
            <color key="backgroundColor" red="0.68716365098953247" green="0.31972628831863403" blue="0.86903256177902222" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
            <point key="canvasLocation" x="282.39999999999998" y="-218.1409295352324"/>
        </view>
    </objects>
</document>

编辑

IB中xib的另一种观点:

在此处输入图片说明

笔记:

  • 文件的所有者设置为我们的自定义类
  • Xib的视图本身已连接到 @IBOutlet var contentView: UIView!

编辑2

要确保从xib加载的视图正确调整大小,请执行以下任一操作:

A)将xib中Layout属性设置contentViewTranslates Mask Into Constraints

B)如果Layout设置为Automatic,我们可以修改setup()函数:

func setup() {
    let nib = UINib(nibName: "TwoLabelView", bundle: nil)
    nib.instantiate(withOwner: self, options: nil)
    addSubview(contentView)

    // make sure we're using the right sizing method
    if contentView.translatesAutoresizingMaskIntoConstraints == false {
        contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    }

    contentView.frame = self.bounds

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自动调整大小蒙版无法正常工作

来自分类Dev

自动布局(约束)与自动调整大小蒙版(弹簧和支柱)

来自分类Dev

如何调整图像分割蒙版的大小?

来自分类Dev

从Xib文件到单独的View Controller的IBAction

来自分类Dev

选中情节提要中的“使用自动布局”是否会转换所有自动调整大小的蒙版?

来自分类Dev

从子级View Controller推送View Controller

来自分类Dev

SwiftUI让View自动消失

来自分类Dev

gimp:通过脚本调整大小并“钝化蒙版”

来自分类Dev

View Controller not getting called

来自分类Dev

呈现View Controller太慢

来自分类Dev

自动调整蒙版无法单击中心箭头

来自分类Dev

从Storyboard中使用Xib调用View Controller吗?

来自分类Dev

Pager View Controller的根视图的大小与后续View Controller的根视图的大小不同

来自分类Dev

调整大小不遵守分辨率规范

来自分类Dev

从不是View Controller的类导航到View Controller

来自分类Dev

从目标View Controller推送新的View Controller(swift)

来自分类Dev

物镜尺寸调整蒙版

来自分类Dev

没有调用View Controller

来自分类Dev

ng-view的“ Controller as”语法

来自分类Dev

Data is not transferred to next view Controller

来自分类Dev

删除Subview和View Controller?

来自分类Dev

删除Subview和View Controller?

来自分类Dev

如何从底部绘制View Controller

来自分类Dev

在View Controller顶部添加SLComposeServiceViewController

来自分类Dev

目前的Popover View Controller Swift

来自分类Dev

修改Popover View Controller的宽度

来自分类Dev

View Controller无法正确显示

来自分类Dev

View Controller不会立即显示

来自分类Dev

如何调整UITableView的大小而又不调整其中的View大小

Related 相关文章

热门标签

归档