Этот метод принимает массив UIView (а не необязательный UIVIew), попробуйте это
var panels = self.view.subviews
var width = buttonTotalWidth(panels)
func buttonTotalWidth(_ panels: [UIView]) -> CGFloat {
var width: CGFloat = 0
for panel: UIView in panels.enumerated() {
width += panel.frame.width
}
return width
}
если это какие-то дополнительные UIViews, попробуйте это,
func buttonTotalWidth(_ panels: [UIView?]) -> CGFloat {
var width: CGFloat = 0
for panel: UIView? in panels.enumerated() {
width += panel?.frame.width
}
return width
}