在未编译的每个语句中进行文本对齐

Posted

技术标签:

【中文标题】在未编译的每个语句中进行文本对齐【英文标题】:Do text alignment in a for each statement not compiling 【发布时间】:2022-01-22 07:37:24 【问题描述】:

在我下面的快速代码中,它使用了一个 forEach 语句。问题是集合中的一些项目不能做文字提示。例如,在 uiimageview 中无法进行文本对齐。所以我尝试编写一些可能有效但确实发生编译错误的代码。您可以在下面的评论块中看到我尝试编写的代码。

override func viewDidLoad() 
        super.viewDidLoad()
        [player1Score,player2Score,clearBtn,player1UpBTN,player1DownBtn,player2UpBTN,player2DownBtn,play1Lbl, play2Lbl,play1text,play2text,resetBtn,resetBtn,GameLabel,GameText,gameIncrease,gameDecrease,submit].forEach
        $0.translatesAutoresizingMaskIntoConstraints = false
        $0.layer.borderWidth = 1
        view.addSubview($0)
        $0.backgroundColor = UIColor(
            red: .random(in: 0.0...1),
            green: .random(in: 0.0...1),
            blue: .random(in: 0.0...1),
            alpha: 1
            

             //part of cocde I tried that does not work
            if $0 is = UITextField 
                $0.textalignment = .cent
            
        )
     
    

【问题讨论】:

【参考方案1】:

首先,您在调用 UIColor 时缺少一个结束括号。

接下来,你的 if 语句。由于您的对象数组具有不同的类型,因此该数组的类型为Array<Any>。 你的if $0 is UITextField 的意思是“如果当前被迭代的对象是UITextField 类型,则只执行这个if 语句的主体。然而,编译器不会将$0 视为该类型。

我将使用if let 可选绑定来创建UITextField 类型的新局部变量,而不是使用if $0 is <type>

override func viewDidLoad() 
    super.viewDidLoad()
    [player1Score,player2Score,clearBtn,player1UpBTN,player1DownBtn,player2UpBTN,player2DownBtn,play1Lbl, play2Lbl,play1text,play2text,resetBtn,resetBtn,GameLabel,GameText,gameIncrease,gameDecrease,submit].forEach
        $0.translatesAutoresizingMaskIntoConstraints = false
        $0.layer.borderWidth = 1
        view.addSubview($0)
        $0.backgroundColor = UIColor(
            red: .random(in: 0.0...1),
            green: .random(in: 0.0...1),
            blue: .random(in: 0.0...1),
            alpha: 1
        )
        if let textfield = $0 as? UITextField 
            // if the if let succeeds, `textField` will be 
            // a var of the correct type
            textfield.textalignment = .cent
        
    

【讨论】:

以上是关于在未编译的每个语句中进行文本对齐的主要内容,如果未能解决你的问题,请参考以下文章

如何使用nodejs在mongodb中进行文本索引

如何使用 google vision api 从图像中进行文本检测?

在Keras中进行文本分类时出错

如何在 Vim 中进行文本选择操作和使用标志

shell 脚本——第七节课 三剑客之sed语句

将按钮与换行文本并排垂直对齐