Используя код из другого поста, я смог программно нарисовать и стереть подпредставление, в том числе местоположение, ширину и высоту, как показано в func addLoadButton и func removeSubview ниже.Я также выяснил, как программно нарисовать картинку на главном контроллере вида, как показано в func trailerLoadImage ниже.Однако после многих часов и попыток я безуспешно пытался программно добавлять и удалять изображения в этом подпредставлении.
Моя конечная цель - иметь возможность нажимать три разные кнопки типа загрузки трейлера, чтобы вставить три разных изображения (кнопка 1 загружает изображение 1, кнопка 2 загружает изображение 2 и т. д.) в подпредставление, расположенное в определенном месте на экране, и чтобы можно было удалять изображения по одному (возможно, не в порядке, отображаемом на экране) с помощьюнажав на изображения пальцем.Подвид может быть постоянным или может быть создан и удален программно (как используется ниже).
Какой код я бы использовал, чтобы вставить изображение или несколько различных изображений в уже созданное подпредставление, чтобы удалить изображение(s) в обратном порядке добавлено, и очистить все изображения из подпредставления?Если это невозможно, приемлемой альтернативой будет возможность удалить изображение из основного ВК, нажав на него или нажав кнопку, чтобы очистить все добавленные изображения.
//Class declaration
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
//Boolean to include load type one in calculations
var trailerLoad : Bool = false
var trailerLoadDistanceFromFront = 20
//Boolean to include load type two in calculations
var trailerLoadTwo : Bool = false
var trailerLoadTwoDistanceFromFront = 80
//Boolean to include load type three in calculations
var trailerLoadThree : Bool = false
var trailerLoadThreeDistanceFromFront = 120
var trailerLoadWidth : Int = 0
var trailerLoadX : Int = 0
//Boolean true only when subView on trailer is active
var subViewActive : Bool = false
override func viewDidLoad() {
super.viewDidLoad()
//Picker view data sources and delegates included in here and work fine
}
//Adds subview for loads
@IBAction func addLoadButton(_ sender: Any) {
let trailerLoadView: UIView = UIView(frame: CGRect(x: 252, y: 233, width: 378, height: 100))
trailerLoadView.backgroundColor = .blue
trailerLoadView.alpha = 0.5
trailerLoadView.tag = 100
trailerLoadView.isUserInteractionEnabled = true
self.view.addSubview(trailerLoadView)
subViewActive = true
}
//If subViewActive is true, calls alert to get distance load type one is from front, moves on to insert and position image, changes trailerLoad bool to true
@IBAction func trailerLoadOneButton(_ sender: Any) {
//If subViewActive is true:
//Calls alert to get distance load type one is from front, puts in var trailerLoadDistanceFromFront
//Calls trailerLoadImage() to insert and position load type one image
//Changes bool trailerLoad to true
//If subViewActive is false:
//Calls alert to tell user that they need to click Add Load button (create subview) before adding load types one, two, or three
}
//Add trailer load type one image, scales and positions it relatively accurately in view.
//To be duplicated and modified for load types two and three in the future, with different images (trailerLoadTypeTwoPic and trailerLoadTypeThreePic)
func trailerLoadImage() {
trailerLoadWidth = 378 * 60 / trailerTotalLength
trailerLoadX = 378 * trailerLoadDistanceFromFront / trailerTotalLength
let imageView = UIImageView(frame: CGRect(x: (252 + trailerLoadX), y: (333 - trailerLoadWidth), width: trailerLoadWidth, height: trailerLoadWidth));
let image = UIImage(named: “trailerLoadTypeOnePic”);
imageView.image = image;
self.view.addSubview(imageView)
}
//Calls func removeSubview to remove subview
@IBAction func resetButton(_ sender: Any) {
removeSubview()
}
//Removes subview for loads
@objc func removeSubview(){
subViewActive = false
if let viewWithTag = self.view.viewWithTag(100) {
viewWithTag.removeFromSuperview()
}else{
print("No!")
}
}
}
Спасибо большоевсем, кто предлагает помощь или совет.