[英]iOS Auto layout: Table View Cell width = 0
我正在使用Xcode 6.0.1,并且第一次是在具有静态单元格的表视图上使用自动布局。
我在第一个表格单元格中有一个文本字段 。 它具有固定的高度,但我希望“ 文本字段”的宽度与表(或表单元格,因为它们的宽度相同)的宽度成比例。 这是因为我想利用iPhone 6和6 Plus的额外宽度。
我在Text Field中添加了高度限制(40像素)以及前导和尾随空间约束(14像素)。 我也将Y对齐方式对准了超级视图。 这些都不是相对于保证金的,因为我想针对iOS 7,并且我相信此选项会导致问题。
我的问题是表格单元格的宽度想要变为零,并且由于前导和尾随的空间限制,这也导致我的文本字段的宽度也变为零。 如果我为“ 文本字段”设置了固定的宽度,那么一切都很好,但是它并没有利用iPhone 6上可用的额外宽度。我实际运行应用程序时,表格和表格单元格可以很好地缩放,尽管它们在Xcode中显示为“放错位置”,认为高度和宽度应为零(请参见下面的屏幕截图)。
我已经无休止地搜寻了Google,但找不到其他遇到这些问题的人。 缩放到表格单元格的高度是一个常见问题,而不是宽度。
这是我的视图层次结构,其中显示了“ 文本字段” (称为“ 标题” )上的约束。
这就是我认为的问题所在,因为Table View单元的期望高度和宽度都为零...
我尝试在Table View Cell等上设置约束,以尝试为其提供非零宽度,但这似乎是不可能的。
这是我的.storyboard文件的前40行左右。 我还没有摆弄XML,它直接来自Xcode。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6245" systemVersion="14A379a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="3">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<scenes>
<!--Dev Note Edit Screen-->
<scene sceneID="2">
<objects>
<tableViewController storyboardIdentifier="DevNoteEditScreen" id="3" customClass="DevNoteEditScreen" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="11" sectionFooterHeight="11" id="4">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<sections>
<tableViewSection id="13">
<cells>
<tableViewCell contentMode="scaleToFill" misplaced="YES" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="11">
<rect key="frame" x="0.0" y="134" width="375" height="44"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="11" id="12">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="Title" placeholder="Title" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="18">
<constraints>
<constraint firstAttribute="height" constant="40" id="kkF-JV-vbs"/>
</constraints>
<color key="textColor" red="0.16078431372549021" green="0.50196078431372548" blue="0.72549019607843135" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="AvenirNext-DemiBold" family="Avenir Next" pointSize="19"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<connections>
<action selector="EditBegin:" destination="3" eventType="editingDidBegin" id="106"/>
<action selector="txtTitle_Changed:" destination="3" eventType="editingChanged" id="255"/>
</connections>
</textField>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="18" secondAttribute="trailing" constant="14" id="08w-eu-Siz"/>
<constraint firstItem="18" firstAttribute="leading" secondItem="12" secondAttribute="leading" constant="14" id="ImE-vD-cJD"/>
<constraint firstAttribute="centerY" secondItem="18" secondAttribute="centerY" id="hA5-l7-zX6"/>
</constraints>
</tableViewCellContentView>
</tableViewCell>
奇怪的是,我设法通过编辑.storyboard文件XML并从<tableViewCell>
元素中删除了以下内容来解决此问题...
misplaced="YES"
translatesAutoresizingMaskIntoConstraints="NO"
并将其添加到<tableViewCell>
元素中...
<autoresizingMask key="autoresizingMask"/>
似乎我的故事板文件因某种原因变得混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.