hyperoslo / Lightbox

:milky_way: A convenient and easy to use image viewer for your iOS app
https://www.hyper.no
Other
1.62k stars 326 forks source link

Download button #294

Open Wiwaltill opened 1 year ago

Wiwaltill commented 1 year ago

It would be nice if there would be a download button at the Lightbox, which saves the opened image in the gallery.

3lvis commented 1 year ago

Hi @Wiwaltill,

Lightbox is currently in maintenance mode, no new features or additions are planned. Only bug fixes.

Wiwaltill commented 1 year ago

Very sad. But thank you for the quick answer.

Maybe it is still possible to keep the idea in mind and include it in a possible further development.

fukemy commented 1 year ago

Hi, i added download + share button, do you still need this feature?

Wiwaltill commented 1 year ago

Yes! This function would definitely still be very useful. @fukemy

fukemy commented 1 year ago

@Wiwaltill just create the class extend LightBoxController then override init function like this:

 public override init(images: [LightboxImage], startIndex: Int = 0) {

        super.init(images: images, startIndex: startIndex)

        self.downloadButton = RoundButton(frame: CGRect(0, 0, 36, 36))
        self.downloadButton?.setImage(UIImage(named: "ic_download"), for: .normal)
        self.downloadButton?.rounded = true
        self.downloadButton?.backgroundColor = UIColor.white.withAlphaComponent(0.5)
        self.downloadButton!.addTarget(self, action: #selector(self.saveImageToLocal), for: .touchUpInside)
        self.footerView.addSubview(self.downloadButton!)
        self.downloadButton?.applyShadow(isApply: true)

        var frame = self.downloadButton!.frame
        frame.origin.x = UIScreen.main.bounds.width / 2 - 18 - 36
        frame.origin.y = 5
        self.downloadButton?.frame = frame

        self.shareButton = RoundButton(frame: CGRect(0, 0, 36, 36))
        self.shareButton?.setImage(UIImage(named: "ic_share"), for: .normal)
        self.shareButton?.rounded = true
        self.shareButton?.backgroundColor = UIColor.white.withAlphaComponent(0.5)
        self.shareButton!.addTarget(self, action: #selector(self.share), for: .touchUpInside)
        self.shareButton?.applyShadow(isApply: true)
        self.footerView.addSubview(self.shareButton!)

        var shareFrame = self.shareButton!.frame
        shareFrame.origin.x = UIScreen.main.bounds.width / 2 + 18
        shareFrame.origin.y = 5
        self.shareButton?.frame = shareFrame

    }
Wiwaltill commented 1 year ago

@fukemy Thank you for the code. Unfortunately, I'm having a few problems - could you send me the code for the entire Swift file? That would be very helpful.

alvincrisuy commented 1 year ago

For the others. I make it work by the following code from @fukemy

`import UIKit import Lightbox

class LightBoxVC: LightboxController {

lazy var downloadButton: UIButton! = {
    let downloadButton = UIButton(frame: CGRect(x: 0, y: 0, width: 36, height: 36))
    downloadButton.backgroundColor = UIColor.white.withAlphaComponent(0.5)
    downloadButton.setImage(UIImage(named: "download"), for: .normal)
    downloadButton.addTarget(self, action: #selector(self.saveImageToLocal), for: .touchUpInside)
    return downloadButton
}()

public override init(images: [LightboxImage], startIndex: Int = 0) {

   super.init(images: images, startIndex: startIndex)

   self.footerView.addSubview(self.downloadButton!)

   var frame = self.downloadButton!.frame
   frame.origin.x = UIScreen.main.bounds.width / 2 - 18 - 36
   frame.origin.y = 5
   self.downloadButton?.frame = frame

}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

@objc func saveImageToLocal() {
    print("saveImageToLocal")
}

}`

IMG_7050