纯粹在代码

时间:2016-03-23 09:06:42

标签: ios autolayout interface-builder

使用Interface Builder时(无论是哪种文档,故事板,视图控制器,视图等),File InspectorUse Auto Layout都有一个复选框。

enter image description here

检查空文档的来源,我们发现它已转换为名为useAutolayout的标记:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
    </objects>
</document>

在没有Interface Builder的情况下工作并在代码中纯粹构建UI时,等效的是什么?

注意:请注意,我发布了相关问题here。但是,这个新问题针对的是useAutolayout属性的技术细节的具体细节,而前者从较高层面看问题,这就是为什么我发现发布新问题而不是更新另一个问题的原因。 / p>

1 个答案:

答案 0 :(得分:1)

没有等价物,因为接口构建器XIB文件是一个说明如何创建NIB文件并且是一组存档的UI对象的规范。 UI对象,如果它们被配置为使用约束并且实际上至少指定了一个约束,则使用translatesAutoresizingMaskIntoConstraints来决定在运行时要做什么。接口构建器标志有效地运行一些处理以更新存档对象以设置或取消设置该标志。

因此,在代码中,如果您要添加自己的约束,则还需要运行

view.translatesAutoresizingMaskIntoConstraints = NO;

禁用旧的自动调整掩码,搞乱一切......