通过更新保持UILabel的尺寸和字体不变

时间:2018-08-08 09:42:02

标签: xcode storyboard swift4

我不确定我的头衔有多大的意义...但是我已经参加了几个小时,还无法提出解决方案。在我的情节提要中,我有一个受约束的UILabel。然后,我通过将Label.width =设置为Superview.widthLabel.height =设置为Superview.heightconstant = 0priority = 1000multiplier = 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

}

0 个答案:

没有答案