ios - 以不同尺寸显示的 ImageView - Swift

标签 ios swift core-data uiimageview uiimagepickercontroller

我在同一 VC 中的代码的 2 个不同部分的 View (在 Storyboard 中创建)中以编程方式创建一些 ImageView ,但我得到了不同的结果。 这是我的代码:

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

    }
}

Images appear like this

上面的代码正确显示了 ImageView ,但我也在核心数据中保存了这些图像,当我再次打开这个 View 时,然后在 viewDidLoad() 中,我添加了这段代码:

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)
}

因此,每当 VC 加载时,图像如下所示: enter image description here

注意:viewForImages 是我使用 Storyboard 创建的 View ,entry 是一个具有 3 个属性的实体:二进制数据 (NSData) 类型的图像 Data1、2、3。 现在当这个 View 出现时,如果 View 已经有图像,它会运行上面的代码,但是首先 imageView1 覆盖了大约 80% 的 View ,而其他 2 个 ImageView 很少出现。为什么会这样?

最佳答案

尝试改变内容模式

imageView.contentMode = .ScaleAspectFill

关于ios - 以不同尺寸显示的 ImageView - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449693/

相关文章:

ios - Swift 中 NSLayoutConstraints 的奇怪行为

ios - 从 TableView 中删除时索引超出范围?

cocoa - NSArrayController 初始化

ios - 如何跟踪collectionView(由FetchedResultsController支持)单元格

ios - Xcode:类型 'GameView' 的值没有成员 'view'

ios - 优化 NSFetchedResultsController 支持的 UITableView

swift - 如何使用NSPersistentCloudKitContainer设置有序关系?

objective-c - 上载音频-HTTP流

ios - 如何开始使用 Quickblox API 和 Swift?

ios - Iphone View 隐藏在 Tabbarcontroller 选项卡栏旁边