2016-08-26 9 views
-3

私はUIViewControllerを持っています。 MyProfileセクションを作成しました。今私がしたいのは、ある人が1つの画像しか持たない場合、4つの画像セクション(uiview)が消えてUI(AboutLabelとTextSectionが現れる)がそれに応じて設定されるということです。実行時にUIViewを削除し、UIを自動的に修正します。

:ユーザーがちょうど1 /画像無し/秒を持っている場合、私が正しく理解しhttps://www.dropbox.com/s/gwokb8ge4pu5cw3/MyProfile.png?dl=0

class MyProfileViewController: UIViewController , UIImagePickerControllerDelegate{ 

@IBOutlet weak var sidebarButton: UIBarButtonItem! 

@IBOutlet weak var profilePic: UIImageView! 

@IBOutlet weak var nameLabel: UILabel! 

@IBOutlet weak var ageLabel: UILabel! 

@IBOutlet weak var totalPicView: UIView! 

@IBOutlet weak var aboutMeLabel: UITextView! 

var imagesArray = [UIImageView]() 
var tag: Int? 


var check = false 
var myUserInfo: UsersInformation! 
var age: Int? 



override func viewDidLoad() { 
    super.viewDidLoad() 




    if revealViewController() != nil 
    { 
     //   revealViewController().rearViewRevealWidth = 62 
     sidebarButton.target = revealViewController() 
     sidebarButton.action = #selector(SWRevealViewController.revealToggle(_:)) 

     //revealViewController().rightViewRevealWidth = 150 
     //rightReveal.target = revealViewController() 
     //rightReveal.action = "rightRevealToggle:" 

     view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 


    if NSUserDefaults.standardUserDefaults().valueForKey(KEY_UID) != nil 
    { 

     let uid = DataService.ds.currentUserID 

     DataService.ds.currentUserRef.observeEventType(.Value, withBlock: { (snapshot) in 

      if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] 
      { 

       if let userDictionary = snapshot.value as? Dictionary<String , AnyObject> 
       { 
        print("ProfileData") 
        self.myUserInfo = UsersInformation(id:uid, userInfo: userDictionary) 

       } 


      } 

       /*SavingDataFUnction*/ 
       self.setProfileData() 

     }) 


    } 






} 


func setProfileData() 
{ 
    age = giveMeAge() 

    let width = view.frame.width 
    let height = view.frame.height 

    print("w:\(width) ; h \(height)") 


    /*Basic Information*/ 
    self.nameLabel.text = myUserInfo.uName 
    self.ageLabel.text = "Age: " + String(age!) 
    self.aboutMeLabel.text = myUserInfo.about 

    if myUserInfo.imageUrl[0] == noImageUrl 
    { 
     profilePic.image = UIImage(named: "Profile") 

     /*Hide totalPicView and Adjust aboutLabel and TextView*/ 
     //totalPicView.viewWithTag(101)?.hidden = true 
     //totalPicView.frame.size.height = 0 


    } 
    else if myUserInfo.imageUrl.count >= 1 
    { 





     /*FirstPic is Profile Pic*/ 

     let profile = myUserInfo.imageUrl[0] 
     profilePic.kf_setImageWithURL(NSURL(string: profile)) 

     for i in 0 ... 3 
     { 
      let url = self.myUserInfo.imageUrl[i] 
      let imgOne = UIImageView(frame: CGRectMake(89.5 * CGFloat(i), 0, 89.5, totalPicView.frame.height)) 



      imgOne.kf_setImageWithURL(NSURL(string: url)) 
      imgOne.tag = 11 + i 

      imagesArray.append(imgOne) 




      self.totalPicView.addSubview(imgOne) 
     } 

     for image: UIImageView in imagesArray 
     { 
      image.userInteractionEnabled = true 
      image.clipsToBounds = true 
      let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.setImage)) 
      image.addGestureRecognizer(tapGesture) 
     } 

    } 



} 

func setImage(gesture: UITapGestureRecognizer) { 

    print(gesture.view?.tag) 
    tag = gesture.view?.tag 

    performSegueWithIdentifier("showImages", sender: self) 

    //presentViewController(imagePicker, animated: true, completion: nil) 
} 




func setMyUI(imageView: UIImageView) 
{ 
    aboutMeLabel.layer.borderColor = UIColor.blackColor().CGColor 
    aboutMeLabel.layer.cornerRadius = 5 
    aboutMeLabel.layer.borderWidth = 1 

} 



func giveMeAge() -> Int 
{ 
    let dob = myUserInfo.dob 
    let todaysDate = NSDate() //dateFromString("2015-02-04 23:29:28", format: "yyyy-MM-dd HH:mm:ss") 

    let dateFormater = NSDateFormatter() 
    dateFormater.dateFormat = "MM/dd/yyyy" 


    let currentDate = dateFormater.dateFromString(dateFormater.stringFromDate(todaysDate)) 

    let myDob = dateFormater.dateFromString(dob) 



    let calendar: NSCalendar = NSCalendar.currentCalendar() 
    let age = calendar.components(.Year, fromDate: myDob! , toDate: currentDate!, options: []) 

    return age.year 
} 


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



// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 

    if segue.identifier == "showImages" 
    { 
     let dest = segue.destinationViewController as! ProfileImages 
     dest.arrarayOfImages = imagesArray 
     dest.tag = tag 

     dest.uname = myUserInfo.uName 
     dest.myage = age 
    } 

} 

}

+2

これまでに何を試しましたか?何か研究をしましたか?現在どのように実装されていますか?あなたのコードはどこですか? –

+0

私はaboutLabelの制約をuiviewとprofilepic imageviewに割り当てようとしましたが、それは私のためには機能しませんでした。 シンプルなUIViewControllerクラスで、UIviewを使用して4つの画像を設定します。 –

+1

「私にとってはうまくいきませんでした」 - 問題の説明ではありません。あなたが持っているコードを投稿し、それが何をしたのか、そしてこれがあなたが望むものとどのように一致しないのかを教えてください。 –

答えて

0

[OK]を場合は、4つのUIImageViewsでUIViewのセクションを削除します。なぜ、あなたのviewDidLoadでif文(スウィフト3構文)をしようとしていない:あなたのUIView yourUIViewForImagesが隠されている

if(yourImageViewArray.count <= 1){ 
    yourUIViewForImages.isHidden = true 
} 

たら、あなたのスタックはそれに応じて調整する必要があります。 AboutセクションのCGRect値(x、y)をハードコードしていない限りあなたのコメント欄にすでに述べたようにコードを投稿することは本当に役に立ちます。

+0

@SaadUllahコードをありがとう。何がうまくいきませんか?一見すると、あなたの配列のif文を単純化します。私は 'myUserInfo.imageUrl [0] == noImageUrl'が何をするのか理解していない - noImageUrlとは何ですか?なぜarray.countを使ってif elseを追跡するのでしょうか?いずれにしても、私の答えで既に述べたようにUIViewを隠すだけです – tech4242

関連する問題