7
votes

iPhone: Comment afficher une vue popup-utile comme contrôleur avec l'image sur iPhone?

Je veux afficher une petite vue popup (juste comme la vue popup dans ipad, mais je veux ici dans iPhone) sur iPhone avec image.

Comment puis-je faire ça?


2 commentaires

Dupliquer possible de votre question précédente: Comment implémenter une vue popup modale dans iPad? Comme écran Facebook en utilisant Sharekit?


@Josh: Hey je demande un effet de ponpé dans iPhone avec une image, y compris l'intérieur. Pas pour modalpresentview.


3 Réponses :


4
votes

Vous pouvez prendre uIView de manière dynamique, puis ajouter uiImageView dans cet uIVIVIEW Tout comme celui-ci

    UIView *tmpView = [[UIView alloc] initWithFrame:CGRectMake(XPosition, YPosition, Width, Height)];       
    UIImage *tmpImg = [UIImage imageNamed:@"YourImageName.png"];
    UIImageView *tmpImgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, tmpImg.size.width, tmpImg.size.height)];
    tmpImgView.image = tmpImg;
    [self.view addSubview:tmpView];


1 commentaires

Mais cela ne donnera pas le même effet que PopoverView donne dans iPad. Je veux le même effet sur iPhone!



5
votes

@devang vous apprécieriez certainement cela http://iosdevelopertaps.com/open-source/ios-open-source-popover-api-for-iphone-wepopover.html

L'autre approche est ce que Mehul a suggéré. Faites-nous savoir si vous rencontrez quelque chose qui correspond à UIPOPOVER dans iPad.


1 commentaires

Joli lien. Mais cela ne permettra que le texte ne pas l'image. Je veux afficher l'image.



0
votes

CollectionView peut être contextuel à l'écran. Vous trouverez ci-dessous un code complet pour afficher la collectionView comme fenêtre contextuelle et masquant la fenêtre contextuelle

import UIKit

class ViewController: UIViewController , UICollectionViewDataSource, UICollectionViewDelegate  {

    //let popView = UICollectionView.init(frame: CGRect(x:8,y:30,width:304,height:200))

    var demoCollectionView:UICollectionView? = nil;

    @IBOutlet var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.loadColorCollectionView()

    }

    func loadColorCollectionView() {
        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
        layout.itemSize = CGSize(width: 30, height: 30)

        demoCollectionView = UICollectionView(frame: CGRect(x:8,y:20,width:304,height:200), collectionViewLayout: layout)


        demoCollectionView?.dataSource = self
        demoCollectionView?.delegate = self
        demoCollectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
        demoCollectionView?.backgroundColor = UIColor.white
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1;
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 200;
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath);

        if indexPath.row%2 == 0 {
        cell.backgroundColor = UIColor.red;
        }
        else{
            cell.backgroundColor = UIColor.blue;
        }
        return cell;
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }

        if indexPath.row%2 == 0 {
            statusBar.backgroundColor = UIColor.red;
        }
        else{
            statusBar.backgroundColor = UIColor.blue;
        }
        self.demoCollectionView?.removeFromSuperview()

    }

    @IBAction func showMessage() {

        //popView.backgroundColor = UIColor.darkGray;
        //self.view.addSubview(popView)


        self.view.addSubview(demoCollectionView!)
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        //self.popView.removeFromSuperview()
        self.demoCollectionView?.removeFromSuperview()


    }

}


0 commentaires