Prechádzať zdrojové kódy

模板列表项标签UI修改

zhongbaojian 5 rokov pred
rodič
commit
834f8cac96

+ 11 - 3
SuperShow.xcodeproj/project.pbxproj

@@ -506,6 +506,8 @@
 		A8ECB1D72305410300D0882B /* WSSCoolVoiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8ECB1D62305410300D0882B /* WSSCoolVoiceViewController.swift */; };
 		A8ED3AE322C06DEB003384BE /* WSSTemplateEditCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8ED3AE222C06DEB003384BE /* WSSTemplateEditCollectionView.swift */; };
 		A8F68658236C0649007C1427 /* WSSAddSutitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F68657236C0649007C1427 /* WSSAddSutitleView.swift */; };
+		A8F68A3B2387895B005ABB8B /* WSSTemplateTagView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F68A3A2387895B005ABB8B /* WSSTemplateTagView.swift */; };
+		A8F68A3D2387896B005ABB8B /* WSSTemplateTagView.xib in Resources */ = {isa = PBXBuildFile; fileRef = A8F68A3C2387896B005ABB8B /* WSSTemplateTagView.xib */; };
 		A8F7F7C42354204C003A38BF /* WSSCreativeTemplateEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F7F7C32354204C003A38BF /* WSSCreativeTemplateEditViewController.swift */; };
 		A8F7F7C923542900003A38BF /* WSSVideoInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F7F7C823542900003A38BF /* WSSVideoInfoModel.swift */; };
 		A8F7F7CB235455A4003A38BF /* WSSSpotVideoInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F7F7CA235455A4003A38BF /* WSSSpotVideoInfoModel.swift */; };
@@ -1325,6 +1327,8 @@
 		A8ECB1D62305410300D0882B /* WSSCoolVoiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WSSCoolVoiceViewController.swift; sourceTree = "<group>"; };
 		A8ED3AE222C06DEB003384BE /* WSSTemplateEditCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WSSTemplateEditCollectionView.swift; sourceTree = "<group>"; };
 		A8F68657236C0649007C1427 /* WSSAddSutitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WSSAddSutitleView.swift; sourceTree = "<group>"; };
+		A8F68A3A2387895B005ABB8B /* WSSTemplateTagView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WSSTemplateTagView.swift; sourceTree = "<group>"; };
+		A8F68A3C2387896B005ABB8B /* WSSTemplateTagView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WSSTemplateTagView.xib; sourceTree = "<group>"; };
 		A8F7F7C32354204C003A38BF /* WSSCreativeTemplateEditViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WSSCreativeTemplateEditViewController.swift; sourceTree = "<group>"; };
 		A8F7F7C823542900003A38BF /* WSSVideoInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WSSVideoInfoModel.swift; sourceTree = "<group>"; };
 		A8F7F7CA235455A4003A38BF /* WSSSpotVideoInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WSSSpotVideoInfoModel.swift; sourceTree = "<group>"; };
@@ -1422,9 +1426,9 @@
 		4364B456225AE8EC004A6869 /* Common */ = {
 			isa = PBXGroup;
 			children = (
-				4364B457225AE8FB004A6869 /* WSSTagButton.swift */,
 				A8BE47102385218A000B6EF9 /* SVProgressHUD+WSSExtension.h */,
 				A8BE47112385218A000B6EF9 /* SVProgressHUD+WSSExtension.m */,
+				4364B457225AE8FB004A6869 /* WSSTagButton.swift */,
 			);
 			path = Common;
 			sourceTree = "<group>";
@@ -1935,6 +1939,8 @@
 				A8F7F7D323547B16003A38BF /* WSSCreativeSubVideoCell.swift */,
 				A8F7F7D023546B55003A38BF /* WSSSubVideoCollectionCell.swift */,
 				439345F22256096E00C192A6 /* WSSTemplateCollectionCell.swift */,
+				A8F68A3A2387895B005ABB8B /* WSSTemplateTagView.swift */,
+				A8F68A3C2387896B005ABB8B /* WSSTemplateTagView.xib */,
 				439345F12256096E00C192A6 /* WSSTemplateTypeTableCell.swift */,
 				A887618F22E15CF500C03BF4 /* WSSTrasnitionSelectAlert.swift */,
 				A89D51982355D0E00039E06C /* WSSVideoCropView.swift */,
@@ -2865,8 +2871,8 @@
 			isa = PBXGroup;
 			children = (
 				A8CA0A4A227157CF007E7584 /* IJKMediaFramework.framework */,
-				A8CA0A4C227157CF007E7584 /* IJKMediaFrameworkWithSSL.framework */,
 				A8CA0A4E227157CF007E7584 /* IJKMediaFrameworkTests.xctest */,
+				A8CA0A4C227157CF007E7584 /* IJKMediaFrameworkWithSSL.framework */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -3201,6 +3207,7 @@
 				A8409726226DC594008F3E47 /* WSSShareCollectionCell.xib in Resources */,
 				43FE16E82243B66C008BB996 /* WSSShootEditSubtitleCell.xib in Resources */,
 				A8A2C9A022E1ED9900214122 /* WSSTemplateSpotEditTransitonButtonView.xib in Resources */,
+				A8F68A3D2387896B005ABB8B /* WSSTemplateTagView.xib in Resources */,
 				A8A39FAE22A60AB0001D2C84 /* WSSTemplateTipsAlertView.xib in Resources */,
 				A8287DD222A519AA00A127FC /* WSSWifiChangeAlertView.xib in Resources */,
 				438E5A8C22520BDB0017FCFD /* WebViewJsBridge.js in Resources */,
@@ -3410,6 +3417,7 @@
 				438E5A8E22520CD10017FCFD /* OJSVendorMacro.swift in Sources */,
 				A8FA6851230CE94400AC75E8 /* PcmPlayer.m in Sources */,
 				438E4CA122201AEA007B9CD9 /* R.generated.swift in Sources */,
+				A8BE47122385218A000B6EF9 /* SVProgressHUD+WSSExtension.m in Sources */,
 				438E4DE122201F9F007B9CD9 /* SetImageExtension.swift in Sources */,
 				438E5A952252134D0017FCFD /* ShareInfo.m in Sources */,
 				438E5A962252134D0017FCFD /* ShareTool.m in Sources */,
@@ -3427,7 +3435,6 @@
 				A8B3833422B73A8A0059CB2F /* WSSAPIPaster.swift in Sources */,
 				439345E12255FB5200C192A6 /* WSSAPIProfileRequest.swift in Sources */,
 				43B62A0222646CD400B6CA30 /* WSSAPIRelateMusic.swift in Sources */,
-				A8BE47122385218A000B6EF9 /* SVProgressHUD+WSSExtension.m in Sources */,
 				439345E82256094E00C192A6 /* WSSAPISearch.swift in Sources */,
 				43B62A0122646CD400B6CA30 /* WSSAPISelectMusic.swift in Sources */,
 				A8C43B1C2293954D00D80E0F /* WSSAPISpecialEffects.swift in Sources */,
@@ -3654,6 +3661,7 @@
 				A8E9CF90235182CC00CA985C /* WSSTemplateSpotResourcePickerController.swift in Sources */,
 				A8E9CF8E2351812F00CA985C /* WSSTemplateSpotSelectedModel.swift in Sources */,
 				A8D6E9AA22DF19700000FB24 /* WSSTemplateSpotViewController.swift in Sources */,
+				A8F68A3B2387895B005ABB8B /* WSSTemplateTagView.swift in Sources */,
 				A8A39FAF22A60AB1001D2C84 /* WSSTemplateTipsAlert.swift in Sources */,
 				439345EF2256095B00C192A6 /* WSSTemplateTypeModel.swift in Sources */,
 				439345F32256096E00C192A6 /* WSSTemplateTypeTableCell.swift in Sources */,

+ 3 - 1
SuperShow/Model/WSSCommonModel.swift

@@ -58,9 +58,11 @@ class WSSCommonTemplateModel: HandyJSON {
 
     /// 首页推荐页 大家都在玩(正方形缩略图)
     var thumbnail: String?
-    
+
     /// 视频播放时长
     var duration: TimeInterval = 0
+    /// 片段个数
+    var fragment: Int = 0
 
     required init() {}
 }

+ 1 - 1
SuperShow/UI/Profile/Collection/WSSProfileMyTemplateViewController.swift

@@ -211,7 +211,7 @@ private extension WSSProfileMyTemplateViewController {
                 self.timeline = listModel.timeline
                 self.collectionView.reloadData()
                 
-                if self.dataArray.count == 0 && self.isEditingMode = true{
+                if self.dataArray.count == 0 && self.isEditingMode == true{
                     self.switchNavigationBarMode(false)
                 }
             }

+ 7 - 86
SuperShow/UI/Template/Views/WSSTemplateCollectionCell.swift

@@ -24,53 +24,7 @@ class WSSTemplateCollectionCell: WSSBaseCollectionCell {
                 coverImageView.ojs_setImage(withUrl: m.cover, placeholder: R.image.home_template_cover_placeholder())
                 nameLabel.text = m.name
 
-                priceTagLabel.backgroundColor = OJSColor(hexRGBValue: 0x501EFF)
-                // feeType 如果是buy,则可VIP、单独购买;如果是feeType为vip,则只能是VIP
-                switch m.feeType {
-                case .free:
-                    // 免费
-                    vipTagLabel.isHidden = true
-                    priceTagLabel.isHidden = true
-
-                case .buy:
-                    // 购买
-                    vipTagLabel.isHidden = false
-                    if m.price > 0 {
-                        priceTagLabel.isHidden = false
-                        let priceStr = String.covertPrice(m.price)
-                        priceTagLabel.text = priceStr
-
-                    } else {
-                        priceTagLabel.isHidden = true
-                        priceTagLabel.text = ""
-                    }
-
-                case .vip:
-                    // VIP
-                    vipTagLabel.isHidden = false
-                    priceTagLabel.isHidden = true
-
-                case .limitFree:
-                    vipTagLabel.isHidden = true
-                    priceTagLabel.isHidden = false
-                    let priceStr = "限免"
-                    priceTagLabel.text = priceStr
-                    priceTagLabel.backgroundColor = OJSColor(hexRGBValue: 0x3388FF)
-                }
-
-                var stackWidth: CGFloat = 0.0
-                if !vipTagLabel.isHidden {
-                    stackWidth += kTagWidth
-                }
-                if !priceTagLabel.isHidden {
-                    stackWidth += kTagWidth
-                }
-                if !vipTagLabel.isHidden && !priceTagLabel.isHidden {
-                    stackWidth += kTagSpace
-                }
-                stackView.snp.updateConstraints { make in
-                    make.width.equalTo(stackWidth)
-                }
+                self.tagView.setupFeeType(m.feeType, price: m.price)
             }
         }
     }
@@ -123,42 +77,9 @@ class WSSTemplateCollectionCell: WSSBaseCollectionCell {
         return label
     }()
 
-    private lazy var priceTagLabel: UILabel = {
-        let label: UILabel = UILabel()
-        label.bounds = CGRect(x: 0, y: 0, width: self.kTagWidth, height: self.kTagHeight)
-        label.text = "¥0.00"
-        label.font = OJAFont.font9
-        label.textColor = OJATextColor.colorWhite
-        label.textAlignment = .center
-        label.backgroundColor = OJSColor(hexRGBValue: 0x501EFF)
-        label.layer.cornerRadius = self.kTagHeight * 0.5
-        label.clipsToBounds = true
-
-        return label
-    }()
-
-    private lazy var vipTagLabel: UILabel = {
-        let label: UILabel = UILabel()
-        label.bounds = CGRect(x: 0, y: 0, width: self.kTagWidth, height: self.kTagHeight)
-        label.text = "VIP"
-        label.font = OJAFont.font9
-        label.textColor = OJATextColor.colorWhite
-        label.textAlignment = .center
-        label.backgroundColor = OJSColor(hexRGBValue: 0xFF1E50)
-        label.layer.cornerRadius = self.kTagHeight * 0.5
-        label.clipsToBounds = true
-
-        return label
-    }()
-
-    private lazy var stackView: UIStackView = {
-        let stackView: UIStackView = UIStackView(arrangedSubviews: [self.vipTagLabel, self.priceTagLabel])
-        stackView.axis = .horizontal
-        stackView.alignment = .fill
-        stackView.distribution = .fillEqually
-        stackView.spacing = self.kTagSpace
-
-        return stackView
+    private lazy var tagView: WSSTemplateTagView = {
+        let tagView: WSSTemplateTagView = WSSTemplateTagView.ojs_loadFromNib()
+        return tagView
     }()
 
     override init(frame: CGRect) {
@@ -191,12 +112,12 @@ class WSSTemplateCollectionCell: WSSBaseCollectionCell {
             make.top.equalTo(self.coverImageView.snp.bottom).offset(8.0)
         }
 
-        contentView.addSubview(stackView)
-        stackView.snp.makeConstraints { make in
+        contentView.addSubview(tagView)
+        tagView.snp.makeConstraints { make in
+            make.left.equalTo(coverImageView.snp.left).offset(4.0)
             make.right.equalTo(coverImageView.snp.right).offset(-4.0)
             make.top.equalTo(coverImageView.snp.top).offset(4.0)
             make.height.equalTo(self.kTagHeight)
-            make.width.equalTo(self.kTagWidth * 2.0 + self.kTagSpace)
         }
     }
 }

+ 61 - 0
SuperShow/UI/Template/Views/WSSTemplateTagView.swift

@@ -0,0 +1,61 @@
+//
+//  WSSTemplateTagView.swift
+//  SuperShow
+//
+//  Created by zhongbaojian on 2019/11/22.
+//  Copyright © 2019 duowan. All rights reserved.
+//
+
+import UIKit
+
+class WSSTemplateTagView: UIView {
+    // MARK: - Public
+
+    override class func awakeFromNib() {
+        super.awakeFromNib()
+    }
+
+    func setupFeeType(_ feeType: WSSTemplateFeeType, price: Int64) {
+        // feeType 如果是buy,则可VIP、单独购买;如果是feeType为vip,则只能是VIP
+        switch feeType {
+        case .free:
+            // 免费
+            vipTagImageView.isHidden = true
+            priceTagView.isHidden = true
+            exemptionTagView.isHidden = true
+
+        case .buy:
+            // 购买
+            vipTagImageView.isHidden = false
+            if price > 0 {
+                priceTagView.isHidden = false
+                priceTagLabel.text = String.covertPrice(price)
+            } else {
+                priceTagView.isHidden = true
+                priceTagLabel.text = ""
+            }
+            exemptionTagView.isHidden = true
+
+        case .vip:
+            // VIP
+            vipTagImageView.isHidden = false
+            priceTagView.isHidden = true
+            exemptionTagView.isHidden = true
+
+        case .limitFree:
+            vipTagImageView.isHidden = true
+            priceTagView.isHidden = true
+            exemptionTagView.isHidden = false
+        }
+    }
+
+    // MARK: - Private
+
+    @IBOutlet weak var vipTagImageView: UIImageView!
+
+    @IBOutlet weak var priceTagView: WSSCornerGradientView!
+    @IBOutlet weak var priceTagLabel: UILabel!
+
+    @IBOutlet weak var exemptionTagView: WSSCornerGradientView!
+    @IBOutlet weak var exemptionTagLabel: UILabel!
+}

+ 124 - 0
SuperShow/UI/Template/Views/WSSTemplateTagView.xib

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15509"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="WSSTemplateTagView" customModule="SuperShow" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="60"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <stackView opaque="NO" contentMode="scaleToFill" distribution="equalSpacing" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="auc-RD-YjH">
+                    <rect key="frame" x="288.5" y="22" width="125.5" height="16"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_ic_vip" translatesAutoresizingMaskIntoConstraints="NO" id="p8V-zZ-IJd">
+                            <rect key="frame" x="0.0" y="0.0" width="41.5" height="16"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="41.5" id="MTP-HT-eXj"/>
+                            </constraints>
+                        </imageView>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2Lp-sz-dOJ" customClass="WSSCornerGradientView" customModule="SuperShow" customModuleProvider="target">
+                            <rect key="frame" x="49.5" y="0.0" width="35" height="16"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="ADv-z3-ZKZ">
+                                    <rect key="frame" x="0.0" y="0.0" width="35" height="16"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="11"/>
+                                    <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                            <constraints>
+                                <constraint firstItem="ADv-z3-ZKZ" firstAttribute="top" secondItem="2Lp-sz-dOJ" secondAttribute="top" id="BdR-hm-Etd"/>
+                                <constraint firstItem="ADv-z3-ZKZ" firstAttribute="leading" secondItem="2Lp-sz-dOJ" secondAttribute="leading" id="KvK-ZG-baN"/>
+                                <constraint firstAttribute="width" constant="35" id="eKy-6e-Zsl"/>
+                                <constraint firstAttribute="trailing" secondItem="ADv-z3-ZKZ" secondAttribute="trailing" id="g5i-Co-Yb3"/>
+                                <constraint firstAttribute="bottom" secondItem="ADv-z3-ZKZ" secondAttribute="bottom" id="oXI-uc-GHL"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="color" keyPath="gradientStartColor">
+                                    <color key="value" red="1" green="0.4549019608" blue="0.090196078430000007" alpha="1" colorSpace="calibratedRGB"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="color" keyPath="gradientEndColor">
+                                    <color key="value" red="0.92941176469999998" green="0.71764705880000002" blue="0.22352941179999999" alpha="1" colorSpace="calibratedRGB"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="8"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showTopLeftCorner" value="YES"/>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showTopRightCorner" value="YES"/>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showBottomLeftCorner" value="YES"/>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showBottomRightCorner" value="YES"/>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HBw-4M-XtY" customClass="WSSCornerGradientView" customModule="SuperShow" customModuleProvider="target">
+                            <rect key="frame" x="92.5" y="0.0" width="33" height="16"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="限免" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="mqf-0w-KPL">
+                                    <rect key="frame" x="0.0" y="0.0" width="33" height="16"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                    <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                            <constraints>
+                                <constraint firstItem="mqf-0w-KPL" firstAttribute="top" secondItem="HBw-4M-XtY" secondAttribute="top" id="7Lj-E6-uAO"/>
+                                <constraint firstAttribute="trailing" secondItem="mqf-0w-KPL" secondAttribute="trailing" id="9Yf-xj-3Ib"/>
+                                <constraint firstAttribute="width" constant="33" id="nBN-7b-jGL"/>
+                                <constraint firstAttribute="bottom" secondItem="mqf-0w-KPL" secondAttribute="bottom" id="tEr-oB-fXn"/>
+                                <constraint firstItem="mqf-0w-KPL" firstAttribute="leading" secondItem="HBw-4M-XtY" secondAttribute="leading" id="wpW-yt-6Xh"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="color" keyPath="gradientStartColor">
+                                    <color key="value" red="0.4549019608" green="0.24313725489999999" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="color" keyPath="gradientEndColor">
+                                    <color key="value" red="0.32156862749999998" green="0.70588235290000001" blue="0.94509803920000002" alpha="1" colorSpace="calibratedRGB"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="8"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showTopLeftCorner" value="YES"/>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showTopRightCorner" value="YES"/>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showBottomLeftCorner" value="YES"/>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showBottomRightCorner" value="YES"/>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="16" id="yz3-CM-HWt"/>
+                    </constraints>
+                </stackView>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="auc-RD-YjH" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="0Y0-Ph-ZRp"/>
+                <constraint firstAttribute="trailing" secondItem="auc-RD-YjH" secondAttribute="trailing" id="dp1-r0-e9F"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <connections>
+                <outlet property="exemptionTagLabel" destination="mqf-0w-KPL" id="0W3-ok-5s5"/>
+                <outlet property="exemptionTagView" destination="HBw-4M-XtY" id="XUH-Me-nBX"/>
+                <outlet property="priceTagLabel" destination="ADv-z3-ZKZ" id="rdZ-9I-taC"/>
+                <outlet property="priceTagView" destination="2Lp-sz-dOJ" id="UJE-lp-tOA"/>
+                <outlet property="vipTagImageView" destination="p8V-zZ-IJd" id="Pan-rD-sf9"/>
+            </connections>
+            <point key="canvasLocation" x="66.666666666666671" y="72.991071428571431"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="home_ic_vip" width="41.5" height="16"/>
+    </resources>
+</document>