我不确定我的头衔有多大的意义...但是我已经参加了几个小时,还无法提出解决方案。在我的情节提要中,我有一个受约束的UILabel。然后,我通过将Label.width
=设置为Superview.width
,Label.height
=设置为Superview.height
,constant = 0
,priority = 1000
和multiplier = 1000%
来进一步约束它。我的字体为47
,并且autoshrink
设置为minimum font size = 10
。这样做是为了让我的标签和字体大小更改为任何设备所需的大小。
问题。
我有一个快捷文件
class text {
struct StructFamilyDare {
func FamilyDareArray() -> Array<String>{
return ["String1", "String2" ,"String3 and so on" ]
}
}
var structFamilyDare = StructFamilyDare()
}
其中我将字符串随机扩展为
import Foundation
extension Collection where Index == Int {
func randomElement() -> Iterator.Element? {
return isEmpty ? nil : self[Int(arc4random_uniform(UInt32(endIndex)))]
}
}
在我的游戏控制器中,我有一个scnode,当我按下它时,它将标签更新为随机字符串。但是,它会将我的标签大小调整为非常小的字体,并且宽度不会更新。我尝试手动为约束Label.heigh/width
设置出口,但随后添加DareLabel.adjustsFontForContentSizeCategory = true
,但这没有用。我尝试手动设置字体,但是它总是会回到小字体。我完全迷路了。
更多代码
import UIKit
import QuartzCore
import SceneKit
class GameViewController: UIViewController {
@IBOutlet weak var DareLabelHeight: NSLayoutConstraint!
@IBOutlet weak var DareLabelWidth: NSLayoutConstraint!
@IBOutlet weak var DareLabel: UILabel!
var cylinder: SCNNode!
let FamilyDareArray = text()
override func viewDidLoad() {
super.viewDidLoad()
setupScene()
}
@objc
func handleTap(_ gestureRecognize: UIGestureRecognizer) {
let p = gestureRecognize.location(in: sceneView)
let hitResults = sceneView.hitTest(p, options: [:])
let tappedNode = hitResults.first?.node
if hitResults.count > 0 {
if scene.rootNode.childNode(withName: "Trigger", recursively: true) == tappedNode {
callDare()
}
}
}
func callDare() {
let familyDareArray =
FamilyDareArray.structFamilyDare.FamilyDareArray()
let item1 = familyDareArray.randomElement()
self.DareLabel.text = item1
DareLabel.adjustsFontForContentSizeCategory = true
//DareLabelHeight.constant = 200 // trying to attempt any changes
// DareLabelWidth.constant = 200
}