FUIObjectCell

@available(*, deprecated, message: "Use `FUIObjectView`, instead.")
open class FUIObjectCell : NibDesignable

FUIObjectCell is an Interface-Builder-designable UI component that extends UIView for showing object information. It contains a set of default content views that are common to Fiori Design Language Object Cell types, with the associated constraint implementations and handling for size classes.

Views Available in FUIObjectCell:

  • iconsStackView: a UIStackView view expected to contain a vertical stack of icons/images in its view content. The view is added to the cell unless cell.preserveIconStackSpacing is set to false. This is the first view in the cell and can be left to detailImageView. Use cell.iconImages to add image(s) to the stack view. Each icon/image size is set to be 16px by 16px.

  • detailImageView: an FUIImageView view added to the cell unless cell.preserveDetailImageSpacing is set to false. The view is to the right of iconsStackView and left of headlineLabel. The image is scaled to fit with fixed aspect. The image size is set to 45px by 45px. Use cell.detailImage to set the image.

  • headlineLabel: a UILabel view is always displayed and intended to display a headline text in the cell. Use cell.headlineText to set label text.

  • subheadlineLabel: a UILabel view is added 3px below headlineLabel to the cell. Use `cell.subheadlineText" to set label text.

  • footnoteLabel: a UILabel view is added 3px below subheadLabel to the cell. Use cell.footnoteText to set label text.

  • descriptionLabel: a UILabel view intended to display long text in the cell. It gets displayed only in regular view. The view is to the right of headlineLabel and left of statusImageView(or statusLabel). Use `cell.descriptionText" to set label text.

  • statusImageView/statusLabel: a UIImageView/UILabel added to the cell for status. statusImageView gets added with size 16px by 16px. The view is to the left of accessory view and right of descriptionLabel. Use cell.statusText to set label text or cell.statusImage to set image.

  • substatusImageView/substatusLabel: a UIImageView/UILabel added to the cell under status. substatusImageView gets added with size 16px by 16px. Use cell.substatusText to set label text or cell.substatusImage to set image. An error will be logged when accessoryType is not .none nor .disclosureIndicator, then setting a substatus label text or substatus image as this setting breaks the Fiori Design Language pattern.

  • accessoryView: a UIView added to the view when cell.accessoryType is not .none. The view is a UIButton customized in FUIObjectCell and is aligned to the baseline of headlineLabel when the type is .disclosureIndicator. For any other types, it’s vertically center-aligned and created by Apple native SDK.

Example Initialization and Configuration

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: ObjectTableViewCell.reuseIdentifier, for: indexPath as IndexPath) as! ObjectTableViewCell
    cell.detailImage = UIImage(named: "ProfilePic")
// To enable a default gradient layer behind the placeholder text.
    cell.detailImageView.isGradientLayerEnabled = true
// Set placeholder text.
    cell.detailImageView.placeholder.text = "This is a placeholder"
    cell.headlineText = "Edgar Scissorhands"
    cell.subheadlineText = "Lorem ipsum datil es iosin Lotios nsiqok"
    cell.footnoteText = "Here is some footer text about Edward"
    cell.statusImageView.image = UIImage(named: "ErrorIcon")
    cell.substatusText = "Active"
    cell.descriptionText = "This text is only visible when the cell is in regular horizontal size class."
    cell.iconImages = [#imageLiteral(resourceName: "clock"), #imageLiteral(resourceName: "check"), #imageLiteral(resourceName: "attention")]
    cell.accessoryType = .disclosureIndicator
    return cell
}

Theming

Supported style classes

fdlFUIObjectCell
fdlFUIObjectCell_headlineLabel
fdlFUIObjectCell_subheadLabel
fdlFUIObjectCell_footnoteLabel
fdlFUIObjectCell_statusLabel
fdlFUIObjectCell_substatusLabel
fdlFUIObjectCell_descriptionLabel
  • Reuse identifier @return String a reuse identifier that describes FUIObjectCell

    Declaration

    Swift

    public static var reuseIdentifier: String { get }
  • Icons Stack view that contains a stack of icons/images in its contents. Each icon/image size is set to be 16px by 16px. Count of visible images is limited to the count of active labels in the main stack.

    Declaration

    Swift

    @IBOutlet
    public private(set) var iconsStackView: UIStackView! { get }
  • Detail image view that contains an image with size of 45px x 45px.

    Declaration

    Swift

    @IBOutlet
    public private(set) var detailImageView: FUIImageView! { get }
  • A headline label in the main view with UIFontTextStyleHeadline style setting as the preferred font. Use headlineText to set the label’s text value.

    Declaration

    Swift

    @IBOutlet
    public private(set) var headlineLabel: FUILabel! { get }
  • A subheader label in the main view with UIFontTextStyleBody style setting as the preferred font. Use subheadlineText to set the label’s text value.

    Declaration

    Swift

    @IBOutlet
    public private(set) var subheadlineLabel: FUILabel! { get }
  • A footnote label in the main view with UIFontTextStyleSubheadline style setting as the preferred font. Use footnoteText to set the label’s text value.

    Declaration

    Swift

    @IBOutlet
    public private(set) var footnoteLabel: FUILabel! { get }
  • A description label displayed in the description view when size class is .regular. Use descriptionText to set the label’s text value.

    Declaration

    Swift

    @IBOutlet
    public private(set) var descriptionLabel: FUILabel! { get }
  • A status label displayed in the status view. Use statusText to set the label’s text value. Status Label and status image cannot coexist in display. When both are set, only the last one set gets displayed.

    Declaration

    Swift

    @IBOutlet
    public private(set) var statusLabel: FUILabel! { get }
  • A status image displayed in the status view. Use statusImage to set an image. It’s expected to either set statusText or statusImage to display either one at the same position. When both statusText and statusImage are set, only the last property set gets displayed.

    Declaration

    Swift

    @IBOutlet
    public private(set) var statusImageView: FUIImageView! { get }
  • A substatus label displayed below statusImageView or statusLabel. Use substatusLabel to set the label’s text value. It’s expected to either set substatusText or substatusImage to display either one at the same position. When both statusText and statusImage are set, only the last property set gets displayed. An error will be logged when accessoryType is not .none nor .disclosureIndicator, then setting a substatus label text or substatus image as this setting breaks the Fiori Design Language pattern.

    Declaration

    Swift

    @IBOutlet
    public private(set) var substatusLabel: FUILabel! { get }
  • A substatus image displayed below statusImageView or statusLabel. Use substatusImage to set an image to the view. It’s expected to either set stubsatusText or substatusImage to display either one at the same position. When both substatusText and substatusImage are set, only the last property set gets displayed. An error will be logged when accessoryType is not .none nor .disclosureIndicator, then setting a substatus label text or substatus image as this setting breaks the Fiori Design Language pattern.

    Declaration

    Swift

    @IBOutlet
    public private(set) var substatusImageView: FUIImageView! { get }
  • Array of images, to be rendered in iconStackView. Count of visible images is limited, to the count of active labels in the main stack.

    Declaration

    Swift

    @IBInspectable
    public var iconImages: [UIImage] { get set }
  • Property to preserve iconStackView spacing. When it’s set to true, spacing is preserved for iconStackView even when there are no icons/images added to the icon stack

    Declaration

    Swift

    @IBInspectable
    public var preserveIconStackSpacing: Bool { get set }
  • Property to set image of DetailImageView

    Declaration

    Swift

    @IBInspectable
    public var detailImage: UIImage? { get set }
  • Property to preserve detailImageView spacing. When it’s set to true, spacing is preserved for detailImageView even when there’s no image added to the image view.

    Declaration

    Swift

    @IBInspectable
    public var preserveDetailImageSpacing: Bool { get set }
  • Text of headlineLabel

    Declaration

    Swift

    @IBInspectable
    public var headlineText: String? { get set }
  • Text of subheadlineLabel. The label is initially hidden. Setting a non-empty value would no longer hide the label.

    Declaration

    Swift

    @IBInspectable
    public var subheadlineText: String? { get set }
  • Text of footnoteLabel. The label is initially hidden. Setting a non-empty value would no longer hide the label.

    Declaration

    Swift

    @IBInspectable
    public var footnoteText: String? { get set }
  • Text of descriptionLabel.

    Declaration

    Swift

    @IBInspectable
    public var descriptionText: String? { get set }
  • Text of statusLabel. An empty string value hides statusLabel. It’s expected to either set statusText or statusImage to display either one at the same position. When both statusText and statusImage are set, only the last property set gets displayed.

    Declaration

    Swift

    @IBInspectable
    public var statusText: String? { get set }
  • Image of status image view

    Declaration

    Swift

    @IBInspectable
    public var statusImage: UIImage? { get set }
  • Text of substatus label.

    Declaration

    Swift

    @IBInspectable
    public var substatusText: String? { get set }
  • Image of substatus image view.

    Declaration

    Swift

    @IBInspectable
    public var substatusImage: UIImage? { get set }
  • 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 areas 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

    public var splitPercent: CGFloat { get set }