title: autolayout doesn't work in table view
body: <p>i am making a header cell in my table view, usually i have no issue with autolayout, and i have given constraints to the image and button like this</p>
  
  <p><a href="https://i.stack.imgur.com/d2lqK.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/d2lqK.png" alt="enter image description here"></a></p>
  
  <p>but when i run the app, all images and labels are attached to the left side, i never add leading edges alignment like this</p>
  
  <p><a href="https://i.stack.imgur.com/SvJnN.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/SvJnN.png" alt="enter image description here"></a></p>
  
  <p>even if i change the constraints in the interface builder, the result is just exactly the same. it seems that the autolayout doesn't work or disabled for this table view header cell only. </p>
  
  <p>here is the code of the table view controller :</p>
  
  <pre><code>class MediaDetailTableViewController: UITableViewController {
  
      var media: Media!
      var currentUser : User!
      var comments = [Comment]()
  
  
  
  
      override func viewDidLoad() {
          super.viewDidLoad()
  
          navigationItem.title = "Photo"
  
          tableView.allowsSelection = false
          tableView.estimatedRowHeight = StoryBoard.mediaCellDefaultHeight
          tableView.rowHeight = UITableViewAutomaticDimension
  
          comments = media.comments
          tableView.reloadData()
  
      }
  
  
  
  
  
      // MARK: - Table view data source
  
      override func numberOfSections(in tableView: UITableView) -&gt; Int {
          return 1
      }
  
      override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
          return 1 + comments.count
          // 1 for the media image detail itself + the number of comments
      }
  
  
      override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
  
  
          if indexPath.row == 0 {
              // media row
              let cell = tableView.dequeueReusableCell(withIdentifier: StoryBoard.mediaCell, for: indexPath) as! MediaTableViewCell
  
              cell.currentUser = currentUser
              cell.media = media
  
              return cell
  
          } else {
              // comment row
              let cell = tableView.dequeueReusableCell(withIdentifier: StoryBoard.commentCell, for: indexPath) as! CommentCell
  
              cell.comments = comments[indexPath.row - 1]
  
              return cell
  
  
          }
  
  
  
      }
  
  
      // to adjust the height of media cell
      override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -&gt; CGFloat {
          return StoryBoard.mediaCellDefaultHeight
      }
  
  
  
  
      // for media header cell
      override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -&gt; UIView? {
          let cell = tableView.dequeueReusableCell(withIdentifier: StoryBoard.mediaHeaderCell) as! MediaHeaderCell
  
          cell.currentUser = currentUser
          cell.media = media
          cell.backgroundColor = UIColor.white
  
          return cell
  
  
  
      }
  
      // set media header height
      override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -&gt; CGFloat {
          return StoryBoard.mediaHeaderHeight
      }
  
  
  
  
  }
  </code></pre>
  
  <p>here is the code of the cell :</p>
  
  <pre><code>class MediaHeaderCell: UITableViewCell {
  
      @IBOutlet weak var profileImageView : UIImageView!
      @IBOutlet weak var usernameButton : UIButton!
      @IBOutlet weak var followButton : UIButton!
  
  
      // the currentUser and Media properties below, will be directed from NewsFeed Table View Controller
  
      var currentUser : User!
      var media : Media! {
          didSet {
  
              // if there is someone logged in and he posts the media,then updateUI
  
              if currentUser != nil {
                  updateUI()
              }
  
          }
      }
  
      var cache = SAMCache.shared()
  
  
  
      func updateUI() {
  
          profileImageView.image = #imageLiteral(resourceName: "icon-defaultAvatar")
  
          let cacheKey = "\(self.media.createdBy.uid)-headerImage"
  
  
  
          // check, if the image has already been downloaded and cached then just used the image, otherwise download from firebase storage
  
  
  
          if let image = cache?.object(forKey: cacheKey) as? UIImage {
  
              self.profileImageView.image = image
  
          } else {
              // they will be closure retain cycle if we use the method below without [weak var], because there are 2 strong reference between Class  and the closure (user - profileImage).
  
              media.createdBy.downloadProfilePicture { [weak self] (image, error) in
  
  
                  if let image = image {
                      self?.profileImageView.image = image
                      self?.cache?.setObject(image, forKey: cacheKey)
                  } else if error != nil {
                      print(error!)
                  }
  
  
              }
          }
  
  
  
  
          profileImageView.layer.cornerRadius = profileImageView.bounds.width / 2.0
          profileImageView.layer.masksToBounds = true
  
          usernameButton.setTitle(media.createdBy.username, for: [])
  
  
          followButton.layer.borderWidth = 1
          followButton.layer.cornerRadius = 2.0
          followButton.layer.borderColor = followButton.tintColor.cgColor
          followButton.layer.masksToBounds = true
  
  
          // check the other users are already followed or not, if yes then follow button shall be shoed up
  
          if currentUser.follows.contains(media.createdBy) || media.createdBy.uid == currentUser.uid {
              followButton.isHidden = true
          } else {
              followButton.isHidden = false
          }
      }
  }
  </code></pre>
  
  <p>what went wrong ?</p>
  
  <p>thanks in advance :)</p>