Xcode 6 故事板为 UITextView 设置了错误的框架大小
Xcode 6 Storyboard setting wrong frame size for UITextView
我开始将 Xcode 与故事板一起使用,并且通常不会使用 swift 更改对象的属性。但是,我在情节提要中定义了两个 UITextView 对象,并且都在情节提要中定义了宽度 316 和高度 36。我试图调整高度以包含不同的文本字符串,但我遇到了文本视图宽度不同的问题运行。当我检查故事板代码时,我发现框架不同。一个是 w 271 和 h 117,而另一个是 w 240 和 h 128 h。 (它们的 x 和 y 设置也不同。)
谁能解释一下我如何在故事板中解决这个问题?它是如何设置的?我必须手动更改情节提要值吗?以下是示例:
<textView autoresizesSubviews="NO" opaque="NO" clearsContextBeforeDrawing="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" ambiguous="YES" misplaced="YES" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" delaysContentTouches="NO" canCancelContentTouches="NO" bouncesZoom="NO" editable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lje-0i-uhe" userLabel="menu textview">
<rect key="frame" x="25" y="20" width="271" height="117"/>
<textView autoresizesSubviews="NO" opaque="NO" clearsContextBeforeDrawing="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" ambiguous="YES" misplaced="YES" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" delaysContentTouches="NO" canCancelContentTouches="NO" bouncesZoom="NO" editable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Lx-zf-Lh8" userLabel="Kits textview">
<rect key="frame" x="0.0" y="0.0" width="240" height="128"/>
更新
这是场景的样子:
我还更改了情节提要中的框架设置,但没有任何区别。但是当我调试代码时我可以看到新的框架设置,这就是我发布这个问题的原因。
更新
导致问题的代码是:
let fixedWidth = textView.frame.size.width
textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = textView.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
textView.frame = newFrame;
textView.scrollEnabled = false
当我暂停代码时 fixedWidth = 300(高度 200)[我更改了故事板中的大小] 但 newSize 是 293 x 169。它没有保持固定宽度。这就是我开始研究框架尺寸的原因。
问题自行解决。我决定添加一个高度限制来规避这个问题。然后我发布了另一个问题,概述了我在 textview 宽度方面的问题。这样做之后,我删除了高度限制,现在宽度是正确的。我不确定它为什么开始工作,因为新的约束是我开始的。但也许他们以某种方式被破坏了。
我开始将 Xcode 与故事板一起使用,并且通常不会使用 swift 更改对象的属性。但是,我在情节提要中定义了两个 UITextView 对象,并且都在情节提要中定义了宽度 316 和高度 36。我试图调整高度以包含不同的文本字符串,但我遇到了文本视图宽度不同的问题运行。当我检查故事板代码时,我发现框架不同。一个是 w 271 和 h 117,而另一个是 w 240 和 h 128 h。 (它们的 x 和 y 设置也不同。)
谁能解释一下我如何在故事板中解决这个问题?它是如何设置的?我必须手动更改情节提要值吗?以下是示例:
<textView autoresizesSubviews="NO" opaque="NO" clearsContextBeforeDrawing="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" ambiguous="YES" misplaced="YES" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" delaysContentTouches="NO" canCancelContentTouches="NO" bouncesZoom="NO" editable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lje-0i-uhe" userLabel="menu textview">
<rect key="frame" x="25" y="20" width="271" height="117"/>
<textView autoresizesSubviews="NO" opaque="NO" clearsContextBeforeDrawing="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" ambiguous="YES" misplaced="YES" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" delaysContentTouches="NO" canCancelContentTouches="NO" bouncesZoom="NO" editable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Lx-zf-Lh8" userLabel="Kits textview">
<rect key="frame" x="0.0" y="0.0" width="240" height="128"/>
更新
我还更改了情节提要中的框架设置,但没有任何区别。但是当我调试代码时我可以看到新的框架设置,这就是我发布这个问题的原因。
更新 导致问题的代码是:
let fixedWidth = textView.frame.size.width
textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = textView.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
textView.frame = newFrame;
textView.scrollEnabled = false
当我暂停代码时 fixedWidth = 300(高度 200)[我更改了故事板中的大小] 但 newSize 是 293 x 169。它没有保持固定宽度。这就是我开始研究框架尺寸的原因。
问题自行解决。我决定添加一个高度限制来规避这个问题。然后我发布了另一个问题,概述了我在 textview 宽度方面的问题。这样做之后,我删除了高度限制,现在宽度是正确的。我不确定它为什么开始工作,因为新的约束是我开始的。但也许他们以某种方式被破坏了。