回答編集履歴

1

追記

2018/01/23 12:16

投稿

fromageblanc
fromageblanc

スコア2724

test CHANGED
@@ -95,3 +95,365 @@
95
95
  実験
96
96
 
97
97
  ![イメージ説明](cda49db63f7315c02999baaf36137ce8.png)
98
+
99
+
100
+
101
+ 追記:テストコード
102
+
103
+ ```swift
104
+
105
+ import UIKit
106
+
107
+
108
+
109
+ class ViewController: UIViewController {
110
+
111
+
112
+
113
+ let q1Label = UILabel()
114
+
115
+ let q2Label = UILabel()
116
+
117
+ let q3Label = UILabel()
118
+
119
+ let q4Label = UILabel()
120
+
121
+ let q5Label = UILabel()
122
+
123
+ let q6Label = UILabel()
124
+
125
+ let q7Label = UILabel()
126
+
127
+ let q8Label = UILabel()
128
+
129
+ let q9Label = UILabel()
130
+
131
+ let q10Label = UILabel()
132
+
133
+ let q11Label = UILabel()
134
+
135
+
136
+
137
+ override func viewDidLoad() {
138
+
139
+ super.viewDidLoad()
140
+
141
+
142
+
143
+ // CSVファイルを読み込む
144
+
145
+ //let csvArray = loadCSV("test")
146
+
147
+
148
+
149
+ //csvArrayから取り出した問題を格納する配列qArray
150
+
151
+ var qArray:[String] = [String](repeating: "a", count: 50)
152
+
153
+
154
+
155
+ //csvArrayの行を取得
156
+
157
+ //qArray = csvArray[2].components(separatedBy: ";")
158
+
159
+
160
+
161
+ // q1Label作成
162
+
163
+ q1Label.text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxx"
164
+
165
+ //q1Label.frame = CGRect(x: 20, y: 60, width: 335, height: 30)
166
+
167
+ q1Label.textColor = UIColor.black
168
+
169
+ q1Label.font = UIFont.systemFont(ofSize: 12)
170
+
171
+ q1Label.backgroundColor = .gray
172
+
173
+ view.addSubview(q1Label)
174
+
175
+
176
+
177
+ // q2Label作成
178
+
179
+ q2Label.text = qArray[7]
180
+
181
+ //q2Label.frame = CGRect(x: 20, y: q1Label.frame.maxY, width: 335, height: 30)
182
+
183
+ q2Label.textColor = UIColor.black
184
+
185
+ q2Label.font = UIFont.systemFont(ofSize: 12)
186
+
187
+ q2Label.backgroundColor = .gray
188
+
189
+ view.addSubview(q2Label)
190
+
191
+
192
+
193
+ // q3Label作成
194
+
195
+ q3Label.text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxx"
196
+
197
+ q3Label.frame = CGRect(x: 20, y: q2Label.frame.maxY, width: 335, height: 30)
198
+
199
+ q3Label.textColor = UIColor.black
200
+
201
+ q3Label.font = UIFont.systemFont(ofSize: 12)
202
+
203
+ q3Label.backgroundColor = .gray
204
+
205
+ view.addSubview(q3Label)
206
+
207
+
208
+
209
+ // q4Label作成
210
+
211
+ q4Label.text = qArray[11]
212
+
213
+ q4Label.frame = CGRect(x: 20, y: q3Label.frame.maxY, width: 335, height: 30)
214
+
215
+ q4Label.textColor = UIColor.black
216
+
217
+ q4Label.font = UIFont.systemFont(ofSize: 12)
218
+
219
+ q4Label.backgroundColor = .gray
220
+
221
+ view.addSubview(q4Label)
222
+
223
+
224
+
225
+ // q5Label作成
226
+
227
+ q5Label.text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxx"
228
+
229
+ q5Label.frame = CGRect(x: 20, y: q4Label.frame.maxY, width: 335, height: 30)
230
+
231
+ q5Label.textColor = UIColor.black
232
+
233
+ q5Label.font = UIFont.systemFont(ofSize: 12)
234
+
235
+ q5Label.backgroundColor = .gray
236
+
237
+ view.addSubview(q5Label)
238
+
239
+
240
+
241
+ // q6Label作成
242
+
243
+ q6Label.text = qArray[15]
244
+
245
+ q6Label.frame = CGRect(x: 20, y: q5Label.frame.maxY, width: 335, height: 30)
246
+
247
+ q6Label.textColor = UIColor.black
248
+
249
+ q6Label.font = UIFont.systemFont(ofSize: 12)
250
+
251
+ q6Label.backgroundColor = .gray
252
+
253
+ view.addSubview(q6Label)
254
+
255
+
256
+
257
+ /// q7Label作成
258
+
259
+ q7Label.text = qArray[17]
260
+
261
+ q7Label.frame = CGRect(x: 20, y: q6Label.frame.maxY, width: 335, height: 30)
262
+
263
+ q7Label.textColor = UIColor.black
264
+
265
+ q7Label.font = UIFont.systemFont(ofSize: 12)
266
+
267
+ q7Label.backgroundColor = .gray
268
+
269
+ view.addSubview(q7Label)
270
+
271
+
272
+
273
+ // q8Label作成
274
+
275
+ q8Label.text = qArray[19]
276
+
277
+ q8Label.frame = CGRect(x: 20, y: q7Label.frame.maxY, width: 335, height: 30)
278
+
279
+ q8Label.textColor = UIColor.black
280
+
281
+ q8Label.font = UIFont.systemFont(ofSize: 12)
282
+
283
+ q8Label.backgroundColor = .gray
284
+
285
+ view.addSubview(q8Label)
286
+
287
+
288
+
289
+ // q9Label作成
290
+
291
+ q9Label.text = qArray[21]
292
+
293
+ q9Label.frame = CGRect(x: 20, y: q8Label.frame.maxY, width: 335, height: 30)
294
+
295
+ q9Label.textColor = UIColor.black
296
+
297
+ q9Label.font = UIFont.systemFont(ofSize: 12)
298
+
299
+ q9Label.backgroundColor = .gray
300
+
301
+ view.addSubview(q9Label)
302
+
303
+ print("q9Label.frame.maxY: (q9Label.frame.maxY)")
304
+
305
+
306
+
307
+
308
+
309
+ // q10Label作成
310
+
311
+ q10Label.text = qArray[23]
312
+
313
+ q10Label.frame = CGRect(x: 20, y: q9Label.frame.maxY, width: 335, height: 30)
314
+
315
+ q10Label.textColor = UIColor.black
316
+
317
+ q10Label.font = UIFont.systemFont(ofSize: 12)
318
+
319
+ q10Label.backgroundColor = .gray
320
+
321
+ view.addSubview(q10Label)
322
+
323
+ print("q9Label.frame.maxY: (q9Label.frame.maxY)")
324
+
325
+
326
+
327
+ // q11Label作成
328
+
329
+ q11Label.text = qArray[25]
330
+
331
+ q11Label.frame = CGRect(x: 20, y: q10Label.frame.maxY, width: 335, height: 30)
332
+
333
+ q11Label.textColor = UIColor.black
334
+
335
+ q11Label.font = UIFont.systemFont(ofSize: 12)
336
+
337
+ q11Label.backgroundColor = .gray
338
+
339
+ view.addSubview(q11Label)
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+ // UILabelを配列に入れる
348
+
349
+ var qlabels = [UILabel]()
350
+
351
+
352
+
353
+ // 配列labelsに追加するラベル
354
+
355
+ qlabels.append(q1Label)
356
+
357
+ qlabels.append(q2Label)
358
+
359
+ qlabels.append(q3Label)
360
+
361
+ qlabels.append(q4Label)
362
+
363
+ qlabels.append(q5Label)
364
+
365
+ qlabels.append(q6Label)
366
+
367
+ qlabels.append(q7Label)
368
+
369
+ qlabels.append(q8Label)
370
+
371
+ qlabels.append(q9Label)
372
+
373
+ qlabels.append(q10Label)
374
+
375
+ qlabels.append(q11Label)
376
+
377
+
378
+
379
+
380
+
381
+ // ■が含まれてる文字列がある場合は色を変える
382
+
383
+ for i in qlabels {
384
+
385
+ if (i.text?.contains("■"))! {
386
+
387
+ i.backgroundColor = .cyan
388
+
389
+ }
390
+
391
+ }
392
+
393
+
394
+
395
+ // 文字数が30より多い場合は改行させて、ラベルのheightを高くする
396
+
397
+ var prev = qlabels[0]
398
+
399
+ for i in 0..<qlabels.count {
400
+
401
+
402
+
403
+ let objects = ["prev":prev,"next":qlabels[i]]
404
+
405
+ objects.forEach { $1.translatesAutoresizingMaskIntoConstraints = false }
406
+
407
+
408
+
409
+ qlabels[i].numberOfLines = 0
410
+
411
+ qlabels[i].lineBreakMode = .byCharWrapping
412
+
413
+
414
+
415
+ let rec = qlabels[i].sizeThatFits(CGSize(width:335,height:30))
416
+
417
+ let tmp = ((qlabels[i].text?.count)! > 30) ? rec.height : 30
418
+
419
+ let height = "".appendingFormat("%.0f", tmp)
420
+
421
+
422
+
423
+ if i == 0 {
424
+
425
+ view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:[prev(==335)]", options: .alignAllLeft, metrics: nil, views: objects))
426
+
427
+ view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[prev(==(height))]", options: .alignAllLeft, metrics: nil, views: objects))
428
+
429
+ view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[prev]", options: .alignAllLeft, metrics: nil, views: objects))
430
+
431
+ view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-60-[prev]", options: .alignAllLeft, metrics: nil, views: objects))
432
+
433
+ continue
434
+
435
+ }
436
+
437
+
438
+
439
+ view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[prev]-20-[next]", options: .alignAllLeft, metrics: nil, views: objects))
440
+
441
+ view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:[next(==335)]", options: .alignAllLeft, metrics: nil, views: objects))
442
+
443
+ view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[next(==(height))]", options: .alignAllLeft, metrics: nil, views: objects))
444
+
445
+
446
+
447
+ prev = qlabels[i]
448
+
449
+ }
450
+
451
+ }
452
+
453
+
454
+
455
+ }
456
+
457
+
458
+
459
+ ```