--- /dev/null
+402111
\ No newline at end of file
objects = {
/* Begin PBXBuildFile section */
+ 3F08A3912F14F42C0085463E /* 402111402111.txt in Resources */ = {isa = PBXBuildFile; fileRef = 3F08A3902F14F42C0085463E /* 402111402111.txt */; };
+ 3F08A3922F14F42C0085463E /* 402111402111.txt in Resources */ = {isa = PBXBuildFile; fileRef = 3F08A3902F14F42C0085463E /* 402111402111.txt */; };
3F469CB12F0B539600121DBD /* DeepChordsSdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */; };
3F8F58292EBCA2B800FFC00B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */; };
3FD1A2952F0BCACB00A62733 /* JLAudioUnitKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FD1A2912F0BC9D800A62733 /* JLAudioUnitKit.xcframework */; };
0D54E0EF2F0A61E600A80EE7 /* DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
248D8B53B5A178ACA5867275 /* Pods_DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
34AD41433DCDC288CFB8C5DA /* Pods-playboy.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-playboy.release.xcconfig"; path = "Target Support Files/Pods-playboy/Pods-playboy.release.xcconfig"; sourceTree = "<group>"; };
+ 3F08A3902F14F42C0085463E /* 402111402111.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = 402111402111.txt; sourceTree = "<group>"; };
3F7602EA2EFA891200588C18 /* DeepChordsSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeepChordsSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3F887B9C2E38D8DC00C98658 /* ShenYin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ShenYin.app; sourceTree = BUILT_PRODUCTS_DIR; };
3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
3F887B932E38D8DC00C98658 = {
isa = PBXGroup;
children = (
+ 3F08A3902F14F42C0085463E /* 402111402111.txt */,
3F8F58282EBCA2B800FFC00B /* PrivacyInfo.xcprivacy */,
3F887B9E2E38D8DC00C98658 /* ShenYin */,
3F8F68802EC1F25700FFC00B /* New Group */,
buildActionMask = 2147483647;
files = (
3F8F58292EBCA2B800FFC00B /* PrivacyInfo.xcprivacy in Resources */,
+ 3F08A3922F14F42C0085463E /* 402111402111.txt in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
buildActionMask = 2147483647;
files = (
3FD1DFED2F0E00BF00A62733 /* PrivacyInfo.xcprivacy in Resources */,
+ 3F08A3912F14F42C0085463E /* 402111402111.txt in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = G23X75CJ67;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ LINK_WITH_STANDARD_LIBRARIES = NO;
MACH_O_TYPE = staticlib;
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = G23X75CJ67;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ LINK_WITH_STANDARD_LIBRARIES = NO;
MACH_O_TYPE = staticlib;
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1000;
- DEVELOPMENT_TEAM = G23X75CJ67;
+ DEVELOPMENT_TEAM = JKLJ58J33Q;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/ShenYin/Sdk/DcSdk/opus/code_opus/lib",
);
MARKETING_VERSION = 1.0.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.deepchords.playboy;
+ PRODUCT_BUNDLE_IDENTIFIER = com.ios.playboy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1000;
- DEVELOPMENT_TEAM = G23X75CJ67;
+ DEVELOPMENT_TEAM = JKLJ58J33Q;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/ShenYin/Sdk/DcSdk/opus/code_opus/lib",
);
MARKETING_VERSION = 1.0.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.deepchords.playboy;
+ PRODUCT_BUNDLE_IDENTIFIER = com.ios.playboy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
else{
bgView.backgroundColor = .clear
originalLabel.textColor = .color(.first)
- icon.image = UIImage(named: "logo_2")
+ icon.image = CCDevice.isJoy ? UIImage(named: "logo_2"):UIImage(named: "logo_4")
icon.snp.remakeConstraints { make in
make.size.equalTo(36)
make.top.equalToSuperview().inset(16)
--- /dev/null
+//
+// HomeAddDeviceView.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/13.
+//
+
+import UIKit
+
+class HomeAddDeviceView: BaseColletionSetionHeader {
+ let bgView = UIView()
+ let icon = HomeAddBtn()
+
+ override func setupViews() {
+ addSubviews([bgView])
+ bgView.addSubviews([icon])
+
+ bgView.do { v in
+ v.backgroundColor = .white
+ v.yc.setCornerRadius(26)
+ v.yc.addTap(target: self, action: #selector(tapAction))
+ }
+ icon.do { v in
+ }
+ }
+
+ override func setupLayout() {
+ bgView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.top.equalToSuperview().inset(30)
+ make.bottom.equalToSuperview()
+ }
+ icon.snp.makeConstraints { make in
+ make.centerY.equalToSuperview()
+ make.height.equalToSuperview()
+ make.centerX.equalToSuperview()
+ }
+ }
+ @objc func tapAction(){
+ App.shared.goToPage(BleScanVC())
+ }
+}
+
+ class HomeAddBtn: BaseView {
+ let icon = UIImageView()
+ let titleLabel = UILabel()
+
+ override func setupViews() {
+ addSubviews([icon,titleLabel])
+
+ icon.do { v in
+ v.image = UIImage(named: "add_device")
+ }
+ titleLabel.do { (v) in
+ v.textColor = .color(.secondary)
+ v.font = .regular(14)
+ v.textAlignment = .left
+ v.text = "添加新设备".l10n
+ }
+ }
+
+ override func setupLayout() {
+ icon.snp.makeConstraints { make in
+ make.size.equalTo(24)
+ make.left.equalToSuperview()
+ make.centerY.equalToSuperview()
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.left.equalTo(icon.snp.right).offset(10)
+ m.right.equalToSuperview()
+ }
+ }
+}
v.contentInset = UIEdgeInsets(top: 0, left: 18, bottom: 0, right: 18)
v.register(HomeDeviceCell.self, forCellWithReuseIdentifier: HomeDeviceCell.reuseID)
v.register(HomeHeadInfoView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier:HomeHeadInfoView.reuseID )
+ v.register(HomeAddDeviceView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier:HomeAddDeviceView.reuseID )
}
imgView.do { v in
// v.backgroundColor = .red
}
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView{
+
+ if kind == UICollectionView.elementKindSectionFooter {
+ let footer = HomeAddDeviceView.footer(with: collectionView, indexPath: indexPath)
+ footer.isHidden = DeviceVM.shared.dataList.count > 0
+ return footer
+ } else {
let header = HomeHeadInfoView.header(with: collectionView, indexPath: indexPath)
header.updateUI()
- header.updateColor(currentBg)
+ header.updateColor(currentBg)
return header
+ }
+
+
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSize(width: kScreenWid, height: 160)
}
+ func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
+ return CGSize(width: kScreenWid, height: 82)
+ }
}
navBar.titleLabel.text = "按日期查找".l10n
calendarView = CalendarView(initialContent: makeContent())
+ calendarView.backgroundColor = .color(.bgColor)
calendarView.daySelectionHandler = { [weak self] day in
guard let self = self else { return }
make.left.right.equalToSuperview()
make.bottom.equalToSuperview()
}
+
+ calendarView.scroll(toDayContaining: Date(), scrollPosition: .centered, animated: false)
}
func makeContent() -> CalendarViewContent {
)
var style = MonthHeaderView.InvariantViewProperties.base
style.font = .systemFont(ofSize: 18, weight: .semibold)
- style.textColor = .darkGray
+ style.textColor = .color(.first)
return MonthHeaderView.calendarItemModel(
invariantViewProperties: style,
content: content
// 配置星期标题的样式
var style = DayOfWeekView.InvariantViewProperties.base
style.font = .systemFont(ofSize: 14, weight: .medium)
- style.textColor = .gray
+ style.textColor = .color(.first)
// 返回星期标题的视图模型(content参数名应为dayOfWeekText,而非text)
return DayOfWeekView.calendarItemModel(
// 日期配置
.dayItemProvider { [weak self, calendar, dayDateFormatter] day in
- guard let self else { return nil } // 解包 weak self
+ guard let self else { return nil }
var invariantViewProperties = DayView.InvariantViewProperties.baseInteractive
+
+
let date = calendar.date(from: day.components)
let selectedDate = date?.format(.short)
if let text = defaultDate, selectedDate == text {
- invariantViewProperties.backgroundShapeDrawingConfig.fillColor = .color(.theme).withAlphaComponent(0.5)
+ invariantViewProperties.textColor = .color(.first)
+ invariantViewProperties.backgroundShapeDrawingConfig.fillColor = .color(.theme)
+ }
+ else{
+ invariantViewProperties.textColor = .color(.secondary)
}
return DayView.calendarItemModel(
invariantViewProperties: invariantViewProperties,
loginBtn.snp.makeConstraints { make in
make.top.equalTo(phoneView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
loginBtn.snp.makeConstraints { make in
make.top.equalTo(codeView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
override func setupData() {
loginBtn.snp.makeConstraints { make in
make.top.equalTo(pwdView.snp.bottom).offset(54)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
agreeView.snp.makeConstraints { make in
make.bottom.equalToSuperview().inset(62)
loginBtn.snp.makeConstraints { make in
make.top.equalTo(pwdView.snp.bottom).offset(54)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
agreeView.snp.makeConstraints { make in
make.top.equalTo(pwdView.snp.bottom).offset(10)
registerBtn.snp.makeConstraints { make in
make.top.equalTo(pwdView.snp.bottom).offset(54)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
agreeView.snp.makeConstraints { make in
make.top.equalTo(pwdView.snp.bottom).offset(10)
loginBtn.snp.makeConstraints { make in
make.top.equalTo(phoneView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
loginBtn.snp.makeConstraints { make in
make.top.equalTo(pwdView2.snp.bottom).offset(74)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
desLabel.snp.makeConstraints { make in
make.top.equalTo(pwdView2.snp.bottom).offset(14)
loginBtn.snp.makeConstraints { make in
make.top.equalTo(phoneView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
loginBtn.snp.makeConstraints { make in
make.top.equalTo(codeView.snp.bottom).offset(54)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
pwdBtn.snp.makeConstraints { make in
make.top.equalTo(loginBtn.snp.bottom).offset(20)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
agreeView.snp.makeConstraints { make in
make.top.equalTo(codeView.snp.bottom).offset(10)
loginBtn.snp.makeConstraints { make in
make.top.equalTo(codeView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
loginBtn.snp.makeConstraints { make in
make.top.equalTo(codeView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
override func setupData() {
loginBtn.snp.makeConstraints { make in
make.top.equalTo(codeView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
override func setupData() {
v.text = "验证码登录".l10n
v.textColor = .color(.secondary)
v.font = .regular(12)
- v.textAlignment = .center
+ v.textAlignment = .left
v.yc.addTap(target: self, action: #selector(smsAction))
}
}
addSubviews([titleLabel,icon])
icon.do { v in
- v.image = UIImage(named: "logo_1")
+ v.image = UIImage(named: "logo_2")
+ v.yc.setBorder(width: 1.5, color: .white, radius: 8)
}
titleLabel.do { (v) in
v.textColor = .color(.secondary)
}
icon.do { v in
- v.image = UIImage(named: "device_list_icon")
+ v.image = UIImage(named: "scan_device")
}
nextIcon.image = UIImage(named: "arrow_next")
}
make.top.equalTo(contactView.snp.bottom).offset(40)
make.centerX.equalToSuperview()
make.width.equalTo(kScreenWid - 102)
- make.height.equalTo(55)
+ make.height.equalTo(46)
make.bottom.equalToSuperview().inset(50)
}
}
}
icon.do { v in
v.yc.setCornerRadius(18)
+ v.backgroundColor = .color(.cellBg)
}
contentView.addSubviews([bgView,icon])
else{
bgView.backgroundColor = .color(.cellBg)
originalLabel.textColor = .color(.first)
- icon.image = UIImage(named: "logo_2")
+ icon.image = CCDevice.isJoy ? UIImage(named: "logo_2"):UIImage(named: "logo_4")
icon.snp.remakeConstraints { make in
make.size.equalTo(36)
make.top.equalToSuperview().inset(16)
deactivateBtn.snp.makeConstraints { make in
make.bottom.equalToSuperview().inset(kSafeBtm + 10)
make.left.right.equalToSuperview().inset(18)
- make.height.equalTo(55)
+ make.height.equalTo(48)
}
logoutBtn.snp.makeConstraints { make in
make.bottom.equalTo(deactivateBtn.snp.top).offset(-10)
make.left.right.equalToSuperview().inset(18)
- make.height.equalTo(55)
+ make.height.equalTo(48)
}
switchBtn.snp.makeConstraints { make in
make.bottom.equalTo(logoutBtn.snp.top).offset(-10)
make.left.right.equalToSuperview().inset(18)
- make.height.equalTo(55)
+ make.height.equalTo(48)
}
}
@objc func swictAction(){
make.top.equalTo(codeView.snp.bottom).offset(40)
make.left.equalToSuperview().inset(50)
make.width.equalTo(kScreenWid - 100)
- make.height.equalTo(48)
+ make.height.equalTo(46)
}
}
btn.snp.makeConstraints { make in
make.left.equalToSuperview().inset(50)
make.width.equalTo(kScreenWid - 100)
- make.height.equalTo(48)
+ make.height.equalTo(46)
make.top.equalTo(label.snp.bottom).offset(100)
make.bottom.equalToSuperview().inset(20)
}
loginBtn.snp.makeConstraints { make in
make.top.equalTo(phoneView.snp.bottom).offset(40)
make.left.right.equalToSuperview().inset(51)
- make.height.equalTo(55)
+ make.height.equalTo(46)
}
}
--- /dev/null
+//
+// GlassesFindVC.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/13.
+//
+
+
+import UIKit
+
+class GlassesFindVC:BaseVC{
+ private let titleLabel = UILabel()
+ private let desLabel = UILabel()
+ private let radar = ScanRadarView()
+ private let btn = UIButton(type: .custom)
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ }
+
+ override func setupViews() {
+ self.navBar.title = "查找眼镜".l10n
+ navBar.backgroundColor = .clear
+ view.backgroundColor = .color(.bgColor)
+ view.addSubviews([titleLabel,desLabel,radar,btn])
+
+
+ titleLabel.do { v in
+ v.text = CCBleManager.shared.connectPeripheral?.device.name ?? ""
+ v.font = .regular(20)
+ v.textColor = .color(.first)
+
+ }
+ desLabel.do { v in
+ v.text = "耳机在附近,可通过响铃进行查找".l10n
+ v.font = .regular(14)
+ v.textColor = .color(.secondary)
+
+ }
+ btn.do { v in
+ v.setTitle("眼镜响铃".l10n, for: .normal)
+ v.addTarget(self, action: #selector(btnAction), for: .touchUpInside)
+ v.layer.cornerRadius = 23
+ v.layer.masksToBounds = true
+ v.titleLabel?.font = .bold(14)
+ v.setTitleColor(.rgb(0x121212), for: .normal)
+ v.setBackgroundImage(UIColor.white.image(), for: .normal)
+ v.setBackgroundImage(UIColor.color(.theme).image(), for: .selected)
+// v.backgroundColor = .white
+ }
+ }
+ override func setupLayout() {
+ titleLabel.snp.makeConstraints { make in
+ make.bottom.equalToSuperview().inset(184)
+ make.centerX.equalToSuperview()
+ }
+ desLabel.snp.makeConstraints { make in
+ make.bottom.equalToSuperview().inset(147)
+ make.centerX.equalToSuperview()
+ }
+ radar.snp.makeConstraints { make in
+ make.centerY.equalToSuperview().offset(-80)
+ make.left.equalToSuperview().inset(60)
+ make.size.equalTo(280)
+ }
+
+ btn.snp.makeConstraints { make in
+ make.height.equalTo(46)
+ make.bottom.equalToSuperview().inset(81)
+ make.left.right.equalToSuperview().inset(18)
+ }
+ }
+ override func setupData() {
+
+ }
+ @objc func btnAction(){
+ btn.isSelected = !btn.isSelected
+ if btn.isSelected {
+ CustomAlert.showWith(title: "音量警告".l10n, messgage: "为保护听力,请勿在佩戴耳机时使用此功能。".l10n, cancel: "取消".l10n, cancelCallback: {[weak self] in
+ self?.btn.isSelected = false
+ } ,okCallback: { [weak self] in
+// self?.radar.start = true
+ self?.findAction()
+ })
+ }
+ else{
+// leftRadar.start = false
+ findAction()
+ }
+ }
+
+ func findAction(){
+ var mode:FindType = .cancel
+ if btn.isSelected{
+ mode = .all
+ }
+ CCDevice.findHeadphone(mode)
+ }
+}
+
+fileprivate class ButtonItem: BaseView {
+ let valueLabel = UILabel()
+ let titleLabel = UILabel()
+ var selected:Bool = false{
+ didSet{
+ if selected{
+ backgroundColor = .color(.theme)
+ titleLabel.textColor = .white
+ valueLabel.backgroundColor = .white
+ valueLabel.textColor = backgroundColor
+ }
+ else{
+ backgroundColor = .color(.cellBg)
+ titleLabel.textColor = .color(.first)
+ valueLabel.backgroundColor = .color(.theme)
+ valueLabel.textColor = .white
+ }
+ }
+ }
+
+ override func setupViews() {
+ addSubviews([titleLabel,valueLabel])
+ yc.setCornerRadius(12)
+ titleLabel.do { v in
+ v.font = .regular(14)
+ }
+ valueLabel.do { v in
+ v.font = .regular(14)
+ v.yc.setCornerRadius(9)
+ v.textAlignment = .center
+ }
+ }
+
+ override func setupLayout() {
+ titleLabel.snp.makeConstraints { make in
+ make.left.equalToSuperview().inset(14)
+ make.centerY.equalToSuperview()
+ }
+ valueLabel.snp.makeConstraints { make in
+ make.size.equalTo(18)
+ make.right.equalToSuperview().inset(14)
+ make.centerY.equalToSuperview()
+ }
+ }
+}
+
+fileprivate class ScanRadarView: BaseView {
+ var radarImageView = UIImageView()
+ override func setupViews() {
+ addSubviews([radarImageView])
+
+ radarImageView.do { v in
+ v.image = UIImage(named: "radar_icon")
+ //
+ let animation = CABasicAnimation.init(keyPath: "transform.rotation.z")
+ animation.beginTime = 0.0
+ animation.fromValue = 0.0
+ animation.toValue = 2*Double.pi
+ animation.duration = 2
+ animation.repeatCount = MAXFLOAT
+ v.layer.add(animation, forKey: "radar.transform.rotation.x")
+ }
+ radarImageView.snp.makeConstraints { make in
+ make.size.equalTo(200)
+ make.center.equalToSuperview()
+ }
+ }
+
+}
}
@objc func findAction(){
if CCBleManager.shared.isConnetd {
- App.shared.goToPage(FindVC())
+ if CCDevice.isJoy{
+ App.shared.goToPage(FindVC())
+ }
+ else{
+ App.shared.goToPage(GlassesFindVC())
+ }
}
}
func set(title:String,font:UIFont = .bold(14),style:CustomButtonStyle = .theme1, target: Any?, action: Selector) {
setTitle(title, for: .normal)
addTarget(target, action: action, for: .touchUpInside)
- layer.cornerRadius = 12
+ layer.cornerRadius = 23
layer.masksToBounds = true
titleLabel?.font = font
if style == .theme1 {
- setTitleColor(.white, for: .normal)
- backgroundColor = UIColor.color(.theme)
+ setTitleColor(.rgb(0x121212), for: .normal)
+ backgroundColor = .white
}
else if style == .theme4 {
setTitleColor(.hexString("#FF4E4E"), for: .normal)
titleLabel?.font = .bold(14)
}
else if style == .theme3 {
- setTitleColor(.color(.secondary), for: .normal)
+ layer.cornerRadius = 12
+ setTitleColor(.color(.first), for: .normal)
backgroundColor = .color(.cellBg)
titleLabel?.font = .regular(14)
}
else{
- setTitleColor(.color(.theme), for: .normal)
+ setTitleColor(.white, for: .normal)
backgroundColor = .clear
layer.borderWidth = 1.4
- layer.borderColor = UIColor.color(.theme).cgColor
+ layer.borderColor = UIColor.color(.first).cgColor
}
}
}
cancelButton.snp.makeConstraints { (m) in
m.top.equalToSuperview().inset(132)
- m.height.equalTo(45)
+ m.height.equalTo(46)
m.width.equalTo(138)
m.left.equalToSuperview().inset(23)
}
+++ /dev/null
-{
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
"scale" : "1x"
},
{
- "filename" : "Slice 7@2x.png",
+ "filename" : "Slice 77@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "Slice 7@3x.png",
+ "filename" : "Slice 77@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
"scale" : "1x"
},
{
- "filename" : "Slice 98@2x.png",
+ "filename" : "Slice 98@3x 1.png",
"idiom" : "universal",
"scale" : "2x"
},
"scale" : "1x"
},
{
- "filename" : "Slice 99@2x.png",
+ "filename" : "Slice 99@3x 1.png",
"idiom" : "universal",
"scale" : "2x"
},
+++ /dev/null
-{
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
+++ /dev/null
-{
- "images" : [
- {
- "filename" : "Frame_2259.png",
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "filename" : "Frame_2259@2x.png",
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "filename" : "Frame_2259@3x.png",
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
+++ /dev/null
-{
- "images" : [
- {
- "filename" : "Frame_2260.png",
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "filename" : "Frame_2260@2x.png",
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "filename" : "Frame_2260@3x.png",
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
"scale" : "1x"
},
{
- "filename" : "Slice 7@2x.png",
+ "filename" : "Slice 113@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "Slice 7@3x.png",
+ "filename" : "Slice 113@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
--- /dev/null
+{
+ "applinks": {
+ "apps": [],
+ "details": [
+ {
+ "appID": "JKLJ58J33Q.com.ios.playboy",
+ "paths": [
+ "/app/*",
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+@LIUCHENG 13、IOS开发者账号
+账号:keqianggx@163.com
+密码:KEqiang123456
+绑定手机号:18668363066
\ No newline at end of file