Xcode 6 Storyboard 为 UITextView 设置错误的帧大小

Posted

技术标签:

【中文标题】Xcode 6 Storyboard 为 UITextView 设置错误的帧大小【英文标题】:Xcode 6 Storyboard setting wrong frame size for UITextView 【发布时间】:2015-12-01 07:03:49 【问题描述】:

我开始使用带有故事板的 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"  />


<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"  />

更新 场景是这样的:

我还更改了情节提要中的框架设置,但没有任何区别。但是我在调​​试代码时可以看到新的框架设置,这就是我发布这个问题的原因。

更新 导致问题的代码是:

 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 (height 200) [我更改了情节提要中的大小] 但 newSize 是 293 x 169。它没有保持固定宽度。这就是我开始研究帧大小的原因。

【问题讨论】:

我有另一个运行正确的文本视图(IMO)但具有相同的设置(模棱两可和放错位置)。鉴于您认为我的约束不正确,鉴于情节提要上没有错误指示,我如何确定哪一个。 上述评论指的是我与马特的一次扩展讨论。他说我的问题是由不正确的约束引起的。一段时间后,我找不到任何约束问题。由于这种差异,他似乎已经移除了他的 cmets。 【参考方案1】:

问题自行解决。我决定添加一个高度约束来规避这个问题。然后我发布了另一个问题,概述了我在 textview 宽度方面的问题。之后,我删除了高度约束,现在宽度是正确的。我不确定它为什么开始起作用,因为新的约束是我开始的。但也许他们以某种方式被破坏了。

【讨论】:

以上是关于Xcode 6 Storyboard 为 UITextView 设置错误的帧大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 6 OSX Storyboard 中为 NSToolbar 项目设置 IBOutlet

更新 xcode 6.3.1 时,“Main.storyboard”的对象消失了

无法在 Xcode 6 的新 Storyboard 中设置初始视图控制器

Xcode 6 中 Mac OS 应用程序的 Storyboard segues

Xcode Storyboard中有设置应用吗?

XCode 6.4 中 iOS8 Storyboard 中缺少约束图标,适用于最初在早期版本的 iOS 下编写的应用程序