FUIObjectHeader
@IBDesignable open class FUIObjectHeader: NibDesignable, UIScrollViewDelegate
FUIObjectHeader
extends UIView
for showing information of an object header. It contains a set of default content views which are common to Fiori Design Language Object Cell types, with the associated constraint implementations and handling for size classes.
Regular (Landscape) Horizontal Size Class: Anatomy & Variations
Compact (Portrait) Horizontal Size Class: Anatomy & Variations
Views Available in FUIObjectHeader:
detailImageView
: a UIImageView view added to the view. The image size is set to45px
by45px
in compact mode and70px
by70px
in regular mode. UsedetailImage
to set imageheadlineLabel
: an UILabel view is always displayed and intended to display a heandline text in the view. UseheadlineText
to set label textsubheadlineLabel
: an UILabel view is added 4px belowheadlineLabel
to the view. UsesubheadlineText
to set label texttags
: a list of tag labels is a part ofAdditionalInfoView
added16px
belowsubheadlineLabel
. The view displays no more than 3 tags on screen.bodyLabel
: an UILabel view is a part ofAdditionalInfoView
added 6px belowtags
to the view. UsebodyText
to set label textfootnoteLabel
: an UILabel view is a part ofAdditionalInfoView
added 3px belowbodyLabel
to the view. UsefootnoteText
to set label textdescriptionLabel
: an UILabel view tended to display a long text in the view. It always gets displayed in compact view. IfdetailContentView
andAdditionalInfoView
are set, regular view does not showdescriptionLabel
. In compact view, ifAdditionalInfoView
is not set, the label is displayed belowheadlineLabel
andsubheadlineLabel
on page1 of the scroll view; otherwise, ifDetailContentView
is not set, the label is placed to page2 of the scroll view. When bothAdditionalInfoView
andDetailContentView
are set, the label would be placed to page3 of the scroll view. UsedescriptionText
to set label textstatusImageView
/statusLabel
: an UIImageView/UILabel added to the view for status.statusImageView
gets added with size16px
by16px
. The view is right toheadlineLabel
in compact mode and right toDetailContentView
in regular mode. UsecstatusText
to set label text orstatusImage
to set image.substatusImageView
/substatusLabel
: an UIImageView/UILabel added to the view under status.substatusImageView
gets added with size16px
by16px
. UsesubstatusText
to set label text orsubstatusImage
to set image.detailContentView
: an UIView added to the view in page2 in compact view and right toheadlineLabel
in regular mode.
Example Initialization and Configuration:
In table view controller’s viewDidLoad
function:
//Programmatically add an Object header to tableview
//let objectHeader = FUIObjectHeader() //View height is content driven by default.
// //Or if developer wants to explictely set the height, set `isAutoResizingHeight` to false
// //let objectHeader = FUIObjectHeader(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: 200))
// //objectHeader.isAutoResizingHeight = false
//Assign objectHeader to tableView's tableHeaderView
//self.tableView.tableHeaderView = objectHeader
//If FUIObjectHeader is added to the tableview in the storyboard
let objectHeader = self.tableView.tableHeaderView as! FUIObjectHeader
objectHeader.detailImageView.image = #imageLiteral(resourceName: "ProfilePic")
objectHeader.headlineLabel.text = "Inspect Electric Pump Motor Long Job Title Example Will Wrap Max# of Lines in the HeadlineLabel"
objectHeader.subheadlineLabel.text = "Job 819701."
objectHeader.tags = [FUITag(title: "Started"), FUITag(title: "PM01"), FUITag(title: "103-Repair")]
objectHeader.bodyLabel.text = "1000-Hamburg, MECHANIK."
objectHeader.footnoteLabel.text = "Due on 12/31/16."
objectHeader.descriptionLabel.text = "Temperature sensor predicts overheating failure in 4 days Urgent and needs attentions. Temperature sensor predicts overheating failure in 4 days Urgent and needs attentions."
objectHeader.statusLabel.text = "High"
objectHeader.substatusImageView.image = #imageLiteral(resourceName: "ErrorIcon")
// create a custom `UIView`-subclassing instance, to set to `detailContentView` property.
let myAnalytics = AnalyticHeaderDetailView()
myAnalytics.chartImageView.image = #imageLiteral(resourceName: "hogwarts")
objectHeader.detailContentView = myAnalytics
Note:
FUIObjectHeader
added to UITableView
as tableHeaderView is compatible with UIRefreshControl
added to the same table view. Just note that if an UIRefreshControl
object is set after adding an FUIObjectHeader
object as tableHeaderView, the UIRefreshControl
object must be moved to the front in the table view; otherwise, the UIRefreshControl
object wouldn’t be visible.
- When
FUIObjectHeader
is added to a table view in a storyboard andUIRefreshControl
is added later in a table view controller class’viewDidLoad
function, bring the refreshControl to the front:
self.refreshControl = UIRefreshControl()
self.refreshControl?.addTarget(self, action: #selector(refreshTriggered), for: .valueChanged)
self.refreshControl?.tintColor = UIColor.white
//bring refresh control to the front to make it visible
self.tableView.bringSubview(toFront: self.refreshControl!)
- When both
FUIObjectHeader
andUIRefreshControl
are added programmatically in a table view controller class, table view needs to bring the refreshControl to the front only ifFUIObjectHeader
is added first:
//set objectHeader to tableHeaderView first
self.tableView.tableHeaderView = objectHeader
//set a refresh control next
self.refreshControl = UIRefreshControl()
self.refreshControl?.addTarget(self, action: #selector(refreshTriggered), for: .valueChanged)
self.refreshControl?.tintColor = UIColor.white
//bring refresh control to the front to make it visible
self.tableView.bringSubview(toFront: self.refreshControl!)
- When both
FUIObjectHeader
andUIRefreshControl
are added programmatically in the table view controller class, table view does not need to explicitly bring the refreshControl to the front if refreshControl is added first:
//set a refresh control first
self.refreshControl = UIRefreshControl()
self.refreshControl?.addTarget(self, action: #selector(refreshTriggered), for: .valueChanged)
self.refreshControl?.tintColor = UIColor.white
//no need to explicitly bring refresh control to the front to make it visible
//self.tableView.bringSubview(toFront: self.refreshControl!)
//set objectHeader to tableHeaderView next
self.tableView.tableHeaderView = objectHeader
-
Detail image view that contains an image with size of 45px x 45px in compact mode or 70px x 70px in regular mode
Declaration
Swift
@IBOutlet open weak var detailImageView: FUIImageView!
-
A headline label in the object name and title view. Use
headlineText
to set the label’s text valueDeclaration
Swift
@IBOutlet open weak var headlineLabel: FUILabel!
-
A sub-headline label in the object name and title view. Use
subheadlineText
to set the label’s text valueDeclaration
Swift
@IBOutlet open weak var subheadlineLabel: FUILabel!
-
A footnote label in the additional info view. Use
footnoteText
to set the label’s text valueDeclaration
Swift
@IBOutlet open weak var footnoteLabel: FUILabel!
-
A description label displayed in the description view. Use
descriptionText
to set the label’s text valueDeclaration
Swift
@IBOutlet open weak var descriptionLabel: FUILabel!
-
Master view of FUIObjectHeader
Declaration
Swift
@IBOutlet open weak var masterView: UIView!
-
A status label displayed in the status view. Use
statusText
to set the label’s text value. Status Label and status image can not co-exist in display. When both are set, the last one set gets displayed only.Declaration
Swift
open var statusLabel: FUILabel
-
A substatus label displayed below
statusImageView
orstatusLabel
. UsesubstatusLabel
to set the label’s text value. It’s expected to either setsubstatusText
orsubstatusImage
to display either one as the same position. When bothstatusText
andstatusImage
are set, the last property set gets displayed only.Declaration
Swift
open var substatusLabel: FUILabel
-
A status image displayed in the status view. Use
stuatsImage
to set an image. It’s expected to either setstatusText
orstatusImage
to display either one as the same position. When bothstatusText
andstatusImage
are set, the last property set gets displayed only.Declaration
Swift
open var statusImageView: UIImageView
-
A substatus image displayed below
statusImageView
orstatusLabel
. UsesubstatusImage
to set an image to the view. It’s expected to either setstubsatusText
orsubstatusImage
to display either one as the same position. When bothsubstatusText
andsubstatusImage
are set, the last property set gets displayed only.Declaration
Swift
open var substatusImageView: UIImageView
-
A UIView label in the detail view displayed as page2 in the scroll view for compact mode or right to
headlineLabel
for regular mode.Declaration
Swift
open var detailContentView: UIView!
-
A list of tags displayed in the tags view. No more than three (3) tags will be displayed
Declaration
Swift
open var tags = [FUITag]()
-
Default main stack right edge is set at midpoint of cell’s readable width, minus 8px. Set to fraction between 0.01 and 0.99, to move the right edge of the
mainStack
, relative to the cell readable width.Important: the percentage of readable width includes area often containing other subviews. So, a valid value is typically between 30% and 70%.
Only used when
horizontalSizeClass
of the object cell is.regular
.Declaration
Swift
open var splitPercent: CGFloat
-
A flag to automatically set
FUIObjectHeader
view height based on view content. Settrue
to allow content-driven height resizing; otherwise, settingfalse
allows caller to explictely set the height.Declaration
Swift
open var isAutoResizingHeight: Bool = true
-
Property to set image of
DetailImageView
Declaration
Swift
@IBInspectable open var detailImage: UIImage?
-
Text of
headlineLabel
Declaration
Swift
@IBInspectable open var headlineText: String?
-
Text of
subheadlineLabel
Declaration
Swift
@IBInspectable open var subheadlineText: String?
-
Text of
bodyLabel
Declaration
Swift
@IBInspectable open var bodyText: String?
-
Text of
footnoteText
Declaration
Swift
@IBInspectable open var footnoteText: String?
-
Text of
statusLabel
Declaration
Swift
@IBInspectable open var statusText: String?
-
Image of
statusImageView
Declaration
Swift
@IBInspectable open var statusImage: UIImage?
-
Text of
substatusLabel
Declaration
Swift
@IBInspectable open var substatusText: String?
-
Image of
substatusImageView
Declaration
Swift
@IBInspectable open var substatusImage: UIImage?
-
Text of
descriptionLabel
Declaration
Swift
@IBInspectable open var descriptionText: String?