FUICardView
@MainActor
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
@MainActor override open func calculateLayout(_ targetSize: CGSize) -
Card’s media view
Declaration
Swift
@MainActor public var mediaView: FUICardMediaView { get } -
Card’s main header
Declaration
Swift
@MainActor public var mainHeader: FUICardMainHeaderView { get } -
Card’s extended header
Declaration
Swift
@MainActor public var extHeader: FUICardExtHeaderView { get } -
Card’s body
Declaration
Swift
@MainActor public var body: FUICardBaseDrawingView { get } -
Card’s footer
Declaration
Swift
@MainActor public var footer: FUICardFooterView { get } -
Showing different skeleton loading styles in
FUICardView.Declaration
Swift
@MainActor public func showSkeleton(style: SkeletonStyle)Parameters
styleStyles for skeleton loading in
FUICardView. -
Skeleton loading style for
See moreFUICardViewsingleLinedisplay an image and single line title.compositedisplay an image, multiline, an extra body and a footer.simpleonly display a title and a blank content loading.Declaration
Swift
public enum SkeletonStyle