FUIObjectHeader
@IBDesignable
open class FUIObjectHeader : FUIBaseHeaderView<FUIObjectHeaderView>
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:
//Programmatically add an Object header to tableview
let objectHeader = FUIObjectHeader()
self.tableView.tableHeaderView = objectHeader
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 = <#my image#>
// 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 and UIRefreshControl
is added later in a table view controller class’ viewDidLoad
function, the Developer should 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!)
## Theming
Supported ObjectHeader
class paths:
fdlFUIObjectHeader {}
Supported ObjectHeader
attributes:
tint-color (Color)
background-color (Color)
background-color-scheme (FUIBackgroundColorScheme)
Supported Text
class paths:
fdlFUIObjectHeader_headlineLabel {}
fdlFUIObjectHeader_subheadlineLabel {}
fdlFUIObjectHeader_bodyLabel {}
fdlFUIObjectHeader_footnoteLabel {}
fdlFUIObjectHeader_descriptionLabel {}
fdlFUIObjectHeader_statusLabel {}
fdlFUIObjectHeader_substatusLabel {}
fdlFUIObjectHeader_statusView_statusLabel {} // deprecated
fdlFUIObjectHeader_statusView_substatusLabel {} // deprecated
Supported Text
attributes:
font-color (Color)
font-name (FontName)
font-style (UIFontTextStyle)
font-size (Number)
text-align (TextAlign)
text-line-clamp (Integer)
Supported ImageView
class paths:
fdlFUIObjectHeader_detailImageView {}
fdlFUIObjectHeader_statusImageView {}
fdlFUIObjectHeader_substatusImageView {}
Supported ImageView
attributes:
image-name (Image)
tint-color (Color)
-
Property to set image of
DetailImageView
Declaration
Swift
@IBInspectable public var detailImage: UIImage? { get set }
-
Text of
headlineLabel
Declaration
Swift
@IBInspectable public var headlineText: String? { get set }
-
Text of
subheadlineLabel
Declaration
Swift
@IBInspectable public var subheadlineText: String? { get set }
-
Text of
bodyLabel
Declaration
Swift
@IBInspectable public var bodyText: String? { get set }
-
Text of
footnoteText
Declaration
Swift
@IBInspectable public var footnoteText: String? { get set }
-
Text of
statusLabel
Declaration
Swift
@IBInspectable public var statusText: String? { get set }
-
Image of
statusImageView
Declaration
Swift
@IBInspectable public var statusImage: UIImage? { get set }
-
Text of
substatusLabel
Declaration
Swift
@IBInspectable public var substatusText: String? { get set }
-
Image of
substatusImageView
Declaration
Swift
@IBInspectable public var substatusImage: UIImage? { get set }
-
Text of
descriptionLabel
Declaration
Swift
@IBInspectable public var descriptionText: String? { get set }
-
Text of
tags
for IB display purpose onlyDeclaration
Swift
@IBInspectable public var ibDisplayTagsText: String? { get set }
-
Deprecated property
Declaration
Swift
@available(*, deprecated, message: "The component design has been updated, to allocate content frames based upon the content intrinsic sizes. The value `splitPercent` will be ignored at runtime.") public var splitPercent: CGFloat { get set }
-
Deprecated property
Declaration
Swift
@available(*, deprecated, message: "The component design has been updated, to allocate content frames based upon the content intrinsic sizes. The value `isApplyingSplitPercent` will be ignored at runtime.") public var isApplyingSplitPercent: Bool { get set }