FUICardView
open class FUICardView : FUICardBaseDrawingView
The card has five elements: media view FUICardMediaView, main header FUICardMainHeaderView, extended header FUICardExtHeaderView, body FUICardBaseDrawingView and footer FUICardFooterView. The main header FUICardMainHeaderView is the only mandatory element. All others are optional.
Example Initialization and Configuration:
let card = FUICardView()
// set up main header
card.mainHeader.detailImageView.image = UIImage(named: "imageName")
card.mainHeader.title.text = "Title"
card.mainHeader.subtitle.text = "Subtitle"
card.mainHeader.overflowAction.isHidden = false
card.mainHeader.counter.text = "3 of 36"
// set up the icon stack
let dot = FUIAttributedImage(image: FUIIconLibrary.indicator.dot.withRenderingMode(.alwaysTemplate))
let attachment = FUIAttributedImage(image: FUIIconLibrary.indicator.attachment.withRenderingMode(.alwaysTemplate))
card.mainHeader.iconImages = [dot, attachment, "1"]
// set up media view
card.mediaView.detailImageView.image = UIImage(named: "imageName")
card.mediaView.title.text = "Title"
// set a customized height if needed
card.mediaView.detailImageViewHeight = 300
// set up extended view
card.extHeader.row1.contents = [
FUILabelItem(text: "Negative", image: UIImage(systemName: "exclamationmark.triangle.fill"), alignment: .leading),
FUILabelItem(text: "Critical"),
FUILabelItem(text: "label")
]
card.extHeader.row1.separatorStyle = .automatic
card.extHeader.row2.contents = [FUIRatingControl(style: .standard)]
card.extHeader.row3.contents = [...]
let dollars = FUIKPIUnitItem(string: "$")
let metric = FUIKPIMetricItem(string: "888.88")
let unit = FUIKPIUnitItem(string: "M")
card.extHeader.kpiItems = [dollars, metric, unit]
card.extHeader.kpiFootnote.text = "Label"
// set up body
card.body.contents = [
...
]
// set up footer
card.footer.primaryAction.isHidden = false
card.footer.primaryAction.setTitle("Primary", for: .normal)
card.footer.secondaryAction.isHidden = false
card.footer.secondaryAction.setTitle("Secondary", for: .normal)
Theming
Supported Text class paths:
fdlFUICardMediaView_title {}
fdlFUICardMainHeaderView_title {}
fdlFUICardMainHeaderView_subtitle {}
fdlFUICardMainHeaderView_counter {}
fdlFUICardMainHeaderView_overflowAction {}
fdlFUICardExtHeaderView_label
fdlFUICardExtHeaderView_labelItem_label
fdlFUICardExtHeaderView_kpiFootnote
fdlFUICardFooterView_primaryAction {}
fdlFUICardFooterView_secondaryAction {}
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:
fdlFUICardMediaView_detailImageView {}
fdlFUICardMainHeaderView_detailImageView {}
fdlFUICardExtHeaderView_labelItem_imageView {}
Supported ImageView attributes:
image-name (Image)
tint-color (Color)
Supported TagView class paths:
fdlFUICardExtHeaderView_tagViewSubView {}
Supported TagView attributes:
font-color (Color)
font-name (FontName)
font-style (UIFontTextStyle)
font-size (Number)
fill-color (Color)
corner-radius (Float)
border-width (Float)
border-color (Color)
content-insets (Box)
Supported FUIRatingControl class path:
fdlFUICardExtHeaderView_ratingControl
Supported RatingControl properties:
on-color { -standard | -accented | -editable-disabled | -editable-disabled }: Color;
off-color { -standard | -accented | -editable-disabled | -editable-disabled }: Color;
on-image { -standard | -editable }: Image;
off-image { -standard | -editable }: Image;
-
Fit all views in targetSize based on their priorities
Declaration
Swift
override open func calculateLayout(_ targetSize: CGSize) -
Card’s media view
Declaration
Swift
public var mediaView: FUICardMediaView { get } -
Card’s main header
Declaration
Swift
public var mainHeader: FUICardMainHeaderView { get } -
Card’s extended header
Declaration
Swift
public var extHeader: FUICardExtHeaderView { get } -
Card’s body
Declaration
Swift
public var body: FUICardBaseDrawingView { get } -
Card’s footer
Declaration
Swift
public var footer: FUICardFooterView { get }