Ich erstelle einige Bildansichten programmgesteuert in einer Ansicht (erstellt in Storyboard) auf 2 verschiedenen Teilen des Codes in der gleichen VC, aber ich bekomme unterschiedliche Ergebnisse. Hier ist mein Code:Bildansichten in verschiedenen Größen - Swift
var images: Int?
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
switch images {
case 0:
imagesCount = countImages.noImage
case 1:
imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)), height: Int((viewForImages.frame.height))))
imageView1.image = UIImage(data: imageData1!)
viewForImages.addSubview(imageView1)
case 2:
for view in self.viewForImages.subviews {
view.removeFromSuperview()
}
imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)/2) - 1, height: Int((viewForImages.frame.height))))
imageView1.image = UIImage(data: imageData1!)
viewForImages.addSubview(imageView1)
imageView2 = UIImageView(frame: CGRect(x: Int(imageView1.frame.width) + 1, y: 0, width: Int((viewForImages.frame.width)/2), height: Int(viewForImages.frame.height)))
imageView2.image = UIImage(data: imageData2!)
viewForImages.addSubview(imageView2)
case 3:
for view in self.viewForImages.subviews {
view.removeFromSuperview()
}
imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)/2) - 1, height: Int((viewForImages.frame.height))))
imageView1.image = UIImage(data: imageData1!)
viewForImages.addSubview(imageView1)
imageView2 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: 0, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height)/2) - 1))
imageView2.image = UIImage(data: imageData2!)
viewForImages.addSubview(imageView2)
imageView3 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: Int(imageView2.frame.height) + 1, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height))/2))
imageView3.image = UIImage(data: imageData3!)
viewForImages.addSubview(imageView3)
default:
break
}
}
Der obige Code der Bild Ansichten richtig angezeigt wird, aber ich bin auch diese Bilder in Core Data speichern und wenn ich öffne diese Ansicht wieder, dann in viewDidLoad() ich habe diesen Code hinzugefügt:
override func viewDidLoad() {
super.viewDidLoad()
self.imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)/2) - 1, height: Int((viewForImages.frame.height))))
if let data = entry.imageData1 {
self.imageView1.image = UIImage(data: data)
}
viewForImages.addSubview(imageView1)
self.imageView2 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: 0, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height)/2) - 1))
if let data = entry.imageData2 {
self.imageView2.image = UIImage(data: data)
}
viewForImages.addSubview(imageView2)
self.imageView3 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: Int(imageView2.frame.height) + 1, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height))/2))
if let data = entry.imageData3 {
self.imageView3.image = UIImage(data: data)
}
viewForImages.addSubview(imageView3)
}
Also, wenn VC Lasten, Bilder wie diese erscheinen unten:
Hinweis: viewForImages ist die Ansicht, die ich mit Storyboard erstellt habe, und entry ist eine Entität mit 3 Attribut: image Data1,2,3 vom Typ Binary Data (NSData). Jetzt, wenn diese Ansicht angezeigt wird, wenn die Ansicht bereits Bilder enthält, wird der obige Code ausgeführt, aber erste imageView1 deckt etwa 80% der Ansicht ab, und andere 2 Bildansichten werden selten angezeigt. Warum?
Was meinst du mit selten erscheinen? Sind sie zufällig versteckt oder erscheinen sie jedes Mal, aber die Größe ist klein? –
imageView1 deckt den größten Teil der Ansicht ab (viewForImages). Seine Breite ist nicht halb so wie ich programmiert habe. Es ist viel mehr als das. Deshalb erscheinen die nächsten Bildansichten fast am Ende der Ansicht. So erscheinen nur 20% der beiden Bilder (eines ist auf dem anderen wie 3 Bilder in Twitter). –
@AksharPatel Ich habe die Screenshots hinzugefügt. Du kannst sehen. –