From d93d695d512a2b8ad87792e120e06159925b1b32 Mon Sep 17 00:00:00 2001 From: joywayer Date: Tue, 17 Jun 2025 20:12:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E5=9B=BE=E7=89=87=E8=B5=84=E6=BA=90=E5=92=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Images.xcassets 中创建三个新的 Image Set: * shareWechat.imageset - 微信分享按钮图标 * shareQQ.imageset - QQ分享按钮图标 * shareDouyin.imageset - 抖音分享按钮图标 - 为每个 Image Set 配置 Contents.json,支持 @1x/@2x/@3x 多倍率 - 增强 SharePanel.m 按钮样式设置,添加可选的边框和阴影效果 - 添加详细的图片添加指南文档: * images_xcassets_guide.md - Images.xcassets 使用指南 * share_button_guide.md - 分享按钮设计规范 图片规格:60×60pt (@1x), 120×120pt (@2x), 180×180pt (@3x) 支持圆形按钮设计,代码自动处理圆角效果 --- images_xcassets_guide.md | 85 ++++++++++++++++++ msext/Class/Utils/SharePanel.m | 13 +++ .../shareDouyin.imageset/Contents.json | 23 +++++ .../shareDouyin.imageset/shareDouyin.png | Bin 0 -> 2270 bytes .../shareDouyin.imageset/shareDouyin@2x.png | Bin 0 -> 4314 bytes .../shareDouyin.imageset/shareDouyin@3x.png | Bin 0 -> 6377 bytes .../shareQQ.imageset/Contents.json | 23 +++++ .../shareQQ.imageset/shareQQ.png | Bin 0 -> 2159 bytes .../shareQQ.imageset/shareQQ@2x.png | Bin 0 -> 4174 bytes .../shareQQ.imageset/shareQQ@3x.png | Bin 0 -> 6289 bytes .../shareWechat.imageset/Contents.json | 23 +++++ .../shareWechat.imageset/shareWechat.png | Bin 0 -> 1824 bytes .../shareWechat.imageset/shareWechat@2x.png | Bin 0 -> 3372 bytes .../shareWechat.imageset/shareWechat@3x.png | Bin 0 -> 5130 bytes share_button_guide.md | 35 ++++++++ 15 files changed, 202 insertions(+) create mode 100644 images_xcassets_guide.md create mode 100644 msext/Images.xcassets/shareDouyin.imageset/Contents.json create mode 100644 msext/Images.xcassets/shareDouyin.imageset/shareDouyin.png create mode 100644 msext/Images.xcassets/shareDouyin.imageset/shareDouyin@2x.png create mode 100644 msext/Images.xcassets/shareDouyin.imageset/shareDouyin@3x.png create mode 100644 msext/Images.xcassets/shareQQ.imageset/Contents.json create mode 100644 msext/Images.xcassets/shareQQ.imageset/shareQQ.png create mode 100644 msext/Images.xcassets/shareQQ.imageset/shareQQ@2x.png create mode 100644 msext/Images.xcassets/shareQQ.imageset/shareQQ@3x.png create mode 100644 msext/Images.xcassets/shareWechat.imageset/Contents.json create mode 100644 msext/Images.xcassets/shareWechat.imageset/shareWechat.png create mode 100644 msext/Images.xcassets/shareWechat.imageset/shareWechat@2x.png create mode 100644 msext/Images.xcassets/shareWechat.imageset/shareWechat@3x.png create mode 100644 share_button_guide.md diff --git a/images_xcassets_guide.md b/images_xcassets_guide.md new file mode 100644 index 0000000..d7cc259 --- /dev/null +++ b/images_xcassets_guide.md @@ -0,0 +1,85 @@ +# 📱 Images.xcassets 添加指南 + +## ✅ 已完成的准备工作 +我已经为您创建了三个 Image Set 的目录结构: +- `shareWechat.imageset/` +- `shareQQ.imageset/` +- `shareDouyin.imageset/` + +每个目录都包含了正确的 `Contents.json` 配置文件。 + +## 🎯 接下来您需要做的: + +### 1. 准备图片文件 +创建以下9个图片文件: + +**微信分享图标:** +- `shareWechat.png` (60×60像素) +- `shareWechat@2x.png` (120×120像素) +- `shareWechat@3x.png` (180×180像素) + +**QQ分享图标:** +- `shareQQ.png` (60×60像素) +- `shareQQ@2x.png` (120×120像素) +- `shareQQ@3x.png` (180×180像素) + +**抖音分享图标:** +- `shareDouyin.png` (60×60像素) +- `shareDouyin@2x.png` (120×120像素) +- `shareDouyin@3x.png` (180×180像素) + +### 2. 放置图片文件 +将准备好的图片文件复制到对应的目录: + +``` +msext/Images.xcassets/shareWechat.imageset/ +├── Contents.json ✅ (已创建) +├── shareWechat.png (您需要添加) +├── shareWechat@2x.png (您需要添加) +└── shareWechat@3x.png (您需要添加) + +msext/Images.xcassets/shareQQ.imageset/ +├── Contents.json ✅ (已创建) +├── shareQQ.png (您需要添加) +├── shareQQ@2x.png (您需要添加) +└── shareQQ@3x.png (您需要添加) + +msext/Images.xcassets/shareDouyin.imageset/ +├── Contents.json ✅ (已创建) +├── shareDouyin.png (您需要添加) +├── shareDouyin@2x.png (您需要添加) +└── shareDouyin@3x.png (您需要添加) +``` + +### 3. 验证设置 +1. 在 Xcode 中打开项目 +2. 点击 `Images.xcassets` +3. 您应该能看到三个新的 Image Set: + - shareWechat + - shareQQ + - shareDouyin +4. 点击每个 Image Set,检查图片是否正确显示 + +### 4. 测试运行 +编译并运行项目,检查分享面板中的按钮图标是否正确显示。 + +## 🎨 快速制作测试图标 + +如果您暂时没有设计好的图标,可以使用以下方法快速制作测试图标: + +### 方法1: 使用在线工具 +- **Canva**: 搜索"social media icon" +- **IconFinder**: 下载免费的社交媒体图标 +- **Flaticon**: 下载PNG格式图标 + +### 方法2: 使用现有资源 +临时使用纯色圆形背景 + 文字的方式: +- 微信: 绿色背景 (#07C160) + 白色"微"字 +- QQ: 蓝色背景 (#12B7F5) + 白色"QQ" +- 抖音: 红色背景 (#FE2C55) + 白色"抖"字 + +## ⚠️ 注意事项 +1. 图片文件名必须与 Contents.json 中的 filename 完全一致 +2. PNG格式,支持透明背景 +3. 建议使用无损压缩以保证图片质量 +4. 确保@3x图片在高分辨率设备上清晰显示 diff --git a/msext/Class/Utils/SharePanel.m b/msext/Class/Utils/SharePanel.m index 85b29d8..c8e7caa 100644 --- a/msext/Class/Utils/SharePanel.m +++ b/msext/Class/Utils/SharePanel.m @@ -149,8 +149,21 @@ static SharePanel *sharedPanel = nil; CGFloat x = startX + index * (kButtonSize + kButtonMargin); button.frame = CGRectMake(x, kButtonTopMargin, kButtonSize, kButtonSize); [button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; + + // 圆角设置 button.layer.cornerRadius = kButtonSize / 2; button.clipsToBounds = YES; + + // 可选:添加边框效果 + // button.layer.borderWidth = 1.0; + // button.layer.borderColor = [UIColor colorWithWhite:0.9 alpha:1.0].CGColor; + + // 可选:添加阴影效果(注意:阴影和clipsToBounds冲突,需要使用容器视图) + // button.layer.shadowColor = [UIColor blackColor].CGColor; + // button.layer.shadowOffset = CGSizeMake(0, 2); + // button.layer.shadowOpacity = 0.1; + // button.layer.shadowRadius = 4; + return button; } diff --git a/msext/Images.xcassets/shareDouyin.imageset/Contents.json b/msext/Images.xcassets/shareDouyin.imageset/Contents.json new file mode 100644 index 0000000..55a6335 --- /dev/null +++ b/msext/Images.xcassets/shareDouyin.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "shareDouyin.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "shareDouyin@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "shareDouyin@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/msext/Images.xcassets/shareDouyin.imageset/shareDouyin.png b/msext/Images.xcassets/shareDouyin.imageset/shareDouyin.png new file mode 100644 index 0000000000000000000000000000000000000000..e39ea4b3a18b91c8d95763ef261eadd21f7c768d GIT binary patch literal 2270 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 IM6N<$f{Ro#@c;k- literal 0 HcmV?d00001 diff --git a/msext/Images.xcassets/shareDouyin.imageset/shareDouyin@3x.png b/msext/Images.xcassets/shareDouyin.imageset/shareDouyin@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..bafd499fdfe207ecfaf1fc302804d6fc53047aee GIT binary patch literal 6377 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 literal 0 HcmV?d00001 diff --git a/msext/Images.xcassets/shareQQ.imageset/shareQQ@2x.png b/msext/Images.xcassets/shareQQ.imageset/shareQQ@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8d964db9a7209e2aed03f12a02ac4b24c8f8e9 GIT binary patch literal 4174 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 Y0RH*I#K_QzO#lD@07*qoM6N<$f?7-o?EnA( literal 0 HcmV?d00001 diff --git a/msext/Images.xcassets/shareQQ.imageset/shareQQ@3x.png b/msext/Images.xcassets/shareQQ.imageset/shareQQ@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3f3d6d5bc53c1da62ad387af813bd76900440f10 GIT binary patch literal 6289 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 O0000 zO>)~t7RTQMQ)P{mDk�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