D4rWiNS
D4rWiNS

Reputation: 2615

iOS UIView size

I have a Controller with 4UILabels that are constant height throught all the iPhones, below the lastUILabel there is aUIView with a page controller(with aTableView inside that page controller).

What I want is that theUIView take all the height that he cant :

example: Screen of 600 height

4UILABELS = 200 height TableView = it should get 400 height

Screen of 800 height

4UILABELS = 200 height TableView = it should get 600 height

I need 1 constraint more to set the height of the view,What I have defined is :

  1. EqualWidth constraints to superView
  2. LeadingSpace to SuperView
  3. Top Space to super VIew

Upvotes: 2

Views: 170

Answers (2)

Sajjon
Sajjon

Reputation: 9917

I assume that you are creating this UIViewController in a Storyboard.

You should be able to put all the labels in a container view which you give the constant height of 200 points, as you specified. Make a vertical constraint from "Top layout Guide" to said container view, maybe with the value 0. Drag an UITableView and place it below the container view. Dont give it any constraint regarding height. Make a vertical spacing between the (bottom of) container view and the (top of the) UITableView with value 0 and a vertical spacing between the (bottom of the) UITableView and the Bottom Layout Guide with value 0.

So it will be (V:0 means vertical spacing, constant 0):

Top Layout Guide
V:0
Container View - Height: 200
V:0
TableView (dynamic height)
V:0
Bottom Layout Guide

This should work.

(And then of course you need to create constraints regarding width and also internal constraints for each UILabel inside the container view. Let me know if you need help with that.)

Upvotes: 1

Rory McKinnel
Rory McKinnel

Reputation: 8024

The following constraints should align everything for you so that the UILabels stack vertically, each have height 50, and stretch to the edges. The UIView will take up the remaining space regardless of the screen size.

All UILabels

Pin leading edge to superview

Pin trailing edge to superview

Add height constraint set to 50.0

UILabel 1:

Pin top edge to superview top

UILabel 2:

Pin top edge to UILabel 1 bottom

UILabel 3:

Pin top edge to UILabel 2 bottom

UILabel 4:

Pin top edge to UILabel 3 bottom

UIView

Pin leading edge to superview

Pin trailing edge to superview

Pin top edge to UILabel 4 bottom

Pin bottom edge to superview

UITableView

Pin leading, trailing, top and bottom to its container view so it fills the area.

Upvotes: 1

Related Questions