Код: Выделить всё
main.jsonКод: Выделить всё
xУ меня есть код ниже, который используется для динамического установления представлений, но я понятия не имею, как установить эти представления сначала на сказке, а затем назначить их динамически, используя код ниже:
{
let templateDataUrl = URL(string: url!.absoluteString + "/" + "main.json")!
let task = URLSession.shared.dataTask(with: templateDataUrl) { data, response, error in
guard let data = data, error == nil else {
print("Error loading template data: \(error?.localizedDescription ?? "Unknown error")")
errorType().errorStatusBar()
return
}
do {
let templateData = try JSONDecoder().decode(TemplateData.self, from: data)
DispatchQueue.main.async { [self] in
screenwidth = bounds.size.width
screenheight = bounds.size.height
let frameUrl = URL.init(string: url!.absoluteString + "/" + "frame.png" )
if let frameUrl = frameUrl {
SDWebImageManager.shared.loadImage(with: frameUrl, options: .highPriority, progress: nil, completed: { image, data, error, cacheType, bool, url in
if let error = error {
print("Error loading frame image: \(error.localizedDescription)")
errorType().errorStatusBar()
} else {
self.subImage.image = image
}
})
}
let image = UIImage(named: "frame")
let imageSize = image!.size
let width = (imageSize.width * screenwidth) / imageSize.height
self.scrollViewTemplate.contentSize = CGSize(width: width, height: screenwidth)
self.scrollSubView.frame = CGRect(origin: .zero, size: self.scrollViewTemplate.contentSize)
for data in templateData.result
{
let xx = Double(data.x) ?? 0.0
let yy = Double(data.y) ?? 0.0
let ww = Double(data.w) ?? 0.0
let hh = Double(data.h) ?? 0.0
let newX = (width * xx) / imageSize.width
let newY = (screenwidth * yy) / imageSize.height
let newW = (width * ww) / imageSize.width
let newH = (screenwidth * hh) / imageSize.height
let rectt = CGRect(x: newX, y: newY, width: newW, height: newH)
print(rectt)
if let image = data.image
{
let maskimage = UIImageView()
maskimage.sd_setImage(with: URL(string: url!.absoluteString + "/" + image)!)
maskimage.frame = CGRect(origin: .zero, size: rectt.size)
maskView = UIView(frame: rectt)
maskView.clipsToBounds = true
maskView.tag = self.maskViewAry.count
maskView.mask = maskimage
scrollSubView.addSubview(maskView)
let maskImageUrl = URL(string: url!.absoluteString + "/" + image)!
var imageMask = UIImageView()
imageMask = UIImageView.init(frame: CGRect.init(origin: .zero, size: rectt.size))
imageMask.sd_setImage(with: maskImageUrl)
imageMask.tag = self.maskViewAry.count
imageMask.contentMode = .scaleAspectFit
let tapGesture = UITapGestureRecognizer(target:self,action:#selector(doSomethingOnTap))
imageMask.isUserInteractionEnabled = true
imageMask.addGestureRecognizer(tapGesture)
maskView.addSubview(imageMask)
imageMask.sd_setImage(with: maskImageUrl, completed: { [weak self] (image, error, cacheType, url) in
guard let self = self else { return }
if let loadedImage = image {
self.maskImageAry.append(loadedImage)
self.maskCropImageAry.append(loadedImage)
} else {
print("Failed to load image: \(String(describing: error))")
}
})
self.maskViewAry.append(maskView)
self.scrollSubView.bringSubviewToFront(self.subImage)
}
}
for (_, i) in maskViewAry.enumerated()
{
imgReplaceImg = UIImageView(frame: CGRect(origin: .zero, size: CGSize(width: 30, height: 30)))
imgReplaceImg.translatesAutoresizingMaskIntoConstraints = false
imgReplaceImg.image = UIImage(named: "replaceImg")
imgReplaceImg.contentMode = .scaleAspectFit
scrollSubView.addSubview(imgReplaceImg)
scrollSubView.bringSubviewToFront(imgReplaceImg)
NSLayoutConstraint.activate([
imgReplaceImg.centerXAnchor.constraint(equalTo: i.centerXAnchor),
imgReplaceImg.centerYAnchor.constraint(equalTo: i.centerYAnchor),
imgReplaceImg.widthAnchor.constraint(equalToConstant: 30),
imgReplaceImg.heightAnchor.constraint(equalToConstant: 30)
])
imgReplaceImgs.append(imgReplaceImg)
}
}
} catch {
print("Error decoding template data: \(error.localizedDescription)")
}
}
task.resume()
}
< /code>
Этот код динамически загружает и рендеринг представлений от json. < /p>
Любое руководство было бы действительно оценено. Спасибо заранее!
Подробнее здесь: https://stackoverflow.com/questions/797 ... -swift-ios
Мобильная версия