#ios #loops #for-loop #swift4 #var
#iOS #циклы #для-цикла #swift4 #var
Вопрос:
Мой приведенный ниже код объявляет переменные, а затем добавляет их в вложенное представление views, также объявляющее ограничения. Я хочу посмотреть, могу ли я в любом случае написать этот код короче. С view.addSubview (imageA) и imageA.translatesAutoresizingMaskIntoConstraints = false Я хотел бы посмотреть, могу ли я в любом случае добавить все переменные, такие как imageA, text,textBackward.addSubview(имя файла)
var imageA = UIImageView()
var text = UILabel()
var theName = UILabel()
var textForward = UIButton()
var textBackward = UIButton()
var map = UIButton()
var settings = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
view.addSubview(imageA)
view.addSubview(text)
view.addSubview(theName)
view.addSubview(textForward)
view.addSubview(textBackward)
view.addSubview(map)
view.addSubview(settings)
imageA.translatesAutoresizingMaskIntoConstraints = false
text.translatesAutoresizingMaskIntoConstraints = false
textBackward.translatesAutoresizingMaskIntoConstraints = false
settings.translatesAutoresizingMaskIntoConstraints = false
theName.translatesAutoresizingMaskIntoConstraints = false
map.translatesAutoresizingMaskIntoConstraints = false
textForward.translatesAutoresizingMaskIntoConstraints = false
}
Ответ №1:
Что касается меня, мне нравится помещать все свойства в массив и использовать для каждого замыкания, чтобы установить вызов одной и той же функции внутри замыкания.
var imageA = UIImageView()
var text = UILabel()
var theName = UILabel()
var textForward = UIButton()
var textBackward = UIButton()
var map = UIButton()
var settings = UIButton()
lazy var collection = [imageA, text, theName, textForward, textBackward, map, settings]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
collection.forEach { (view) in
self.view.addSubview(view)
view.translatesAutoresizingMaskIntoConstraints = false
}
}
Если кто-то использует storyboard и outlet, также может добавить коллекцию outlet и связать все нужные вам представления.
коллекция выходных данных
Ответ №2:
Вы можете добавить все вложенные представления в массив и выполнить итерацию следующим образом
[imageA,text,theName,textForward,textBackward,map,settings].forEach({
$0.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview($0)
})