如果稀土掘金App要更新“发布文章”功能,那么入口会设置在哪里?

简介: 如果稀土掘金App要更新“发布文章”功能,那么入口会设置在哪里?

如果稀土掘金App要更新“发布文章”功能,那么入口会设置在哪里?


项目背景

稀土掘金App一直以来都缺少在客户端发布文章的功能,可能原因如下:

一是由于基础功能(示例:会员、活动等)还在完善,优先级较高;

二是由于在移动端实现发布文章功能的开发难度较大、开发周期较长;

三是产品规划中稀土掘金App的发展方向有所侧重,新增的每一项功能都需要经过内部评审层层管控。

如果稀土掘金App要更新发布文章功能,鉴于当前的App设计风格产品结构,入口放在哪里会比较合适呢?

传统的资讯社区类App,新增发布内容的入口通过可以分为3大类:顶部导航入口主页面悬浮入口底部导航入口

那么本章中,我们就来使用SwiftUI实现下几个入口的设计吧~

项目搭建

首先,创建一个新的SwiftUI项目,命名为WritingView

image.png

顶部导航入口

顶部导航入口在头条系的产品中较为常见,示例:今日头条。

这种产品设计方式偏向于让App以内容资讯查阅为重点规划方向,在本身资讯内容较为完善的情况下,强化资讯资讯流,而弱化对于内容共建的产品侧重。

让用户偏向于浏览资讯,而把提供资讯内容的创作者作为有主动意识形态的群体,因此在产品设计上,发布文章功能放置在首页右上角。

功能实现上,我们可以使用NavigationView导航来实现这个功能样式,示例:

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("点击右上角发布文章")
                .padding()
                .navigationBarTitle("首页", displayMode: .inline)
                .navigationBarItems(trailing: publishBtnView)
        }
    }
    // 顶部导航入口
    private var publishBtnView: some View {
        Button(action: {
        }) {
            Image(systemName: "plus.circle.fill")
                .foregroundColor(.blue)
        }
    }
}

上述代码中,我们绘制了一个发布按钮publishBtnView,然后使用navigationBarTitle修饰符设置首页的标题,最后将创建好的publishBtnView视图使用navigationBarItems修饰符放在页面右上角。

image.png

主页悬浮入口

主页悬浮入口是一种悬浮在页面右下角,在底部导航之上的一种入口设置方式。

常见于社区、圈子、问答、购物类App中,主要用于快速编辑分享基于当前页面内容的信息,示例:稀土掘金“沸点”功能。

偏向于引导用户就话题或者内容分享个人见解,构建社区氛围。

功能实现上,我们可以使用ZStack层叠视图,将按钮位置放在页面右下角,示例:

// 悬浮入口
private var suspendBtnView: some View {
    VStack {
        Spacer()
        HStack {
            Spacer()
            Button(action: {
            }) {
                Image(systemName: "plus.circle.fill")
                    .font(.system(size: 60))
                    .foregroundColor(.blue)
            }
        }
    }
    .padding(.bottom, 32)
    .padding(.trailing, 32)
}

上述代码中,我们创建了一个按钮视图suspendBtnView,使用VStack纵向视图和HStack横向视图,将按钮放置在了右下角。

最后我们还需要使用ZStack层叠视图,将suspendBtnView视图和主页层叠在一起,示例:

var body: some View {
    NavigationView {
        ZStack {
            Text("点击右下角发布文章")
                .padding()
            suspendBtnView
        }
        .navigationBarTitle("首页", displayMode: .inline)
    }
}

image.png

底部导航入口

最后一种方式是底部导航入口的方式,常规的底部菜单最多不超过5个入口,排除通用的“首页”和“我的”入口,系统掘金App还有“沸点”、“发现”、“课程”栏目。

当前“首页”承载着推荐文章信息流,发布文章功能当前最有可能安置在主页右上角,其次安排到主页右下角悬浮窗口。

但对于其他功能页面,“发现”页面承载的内容过多,则多于其他栏目内容重复,如果在“发现”页面,技术团队推荐活动推荐等功能与其他栏目相融合,那么可以将“发布文章”操作替代原有的“发现”入口。

当然,这只是个人浅显的建议。

回归主题,在底部导航我们也可以创建“发布文章”的按钮,示例:

// 底部导航入口
struct TabberView: View {
    @Binding var selectedIndex: Int
    var body: some View {
        HStack {
            // 首页
            Button(action: {
                self.selectedIndex = 0
            }) {
                VStack(spacing: 10) {
                    Image(systemName: "house.fill")
                        .font(.system(size: 24))
                    Text("首页")
                        .font(.system(size: 14))
                }
            }.foregroundColor((self.selectedIndex == 0) ? .blue : .gray)
            Spacer(minLength: 0)
            // 沸点
            Button(action: {
                self.selectedIndex = 1
            }) {
                VStack(spacing: 10) {
                    Image(systemName: "flame.fill")
                        .font(.system(size: 24))
                    Text("沸点")
                        .font(.system(size: 14))
                }
            }.foregroundColor((self.selectedIndex == 1) ? .blue : .gray)
            Spacer(minLength: 0)
            // 发布文章
            Button(action: {
                self.selectedIndex = 2
            }) {
                Image(systemName: "plus.circle.fill")
                    .font(.system(size: 48))
            }.foregroundColor(.blue)
            Spacer(minLength: 0)
            // 课程
            Button(action: {
                self.selectedIndex = 3
            }) {
                VStack(spacing: 10) {
                    Image(systemName: "book.closed.fill")
                        .font(.system(size: 24))
                    Text("课程")
                        .font(.system(size: 14))
                }
            }.foregroundColor((self.selectedIndex == 3) ? .blue : .gray)
            Spacer(minLength: 0)
            // 我的
            Button(action: {
                self.selectedIndex = 4
            }) {
                VStack(spacing: 10) {
                    Image(systemName: "person.fill")
                        .font(.system(size: 24))
                    Text("我的")
                        .font(.system(size: 14))
                }
            }.foregroundColor((self.selectedIndex == 4) ? .blue : .gray)
        }.padding(.horizontal, 35)
    }
}

上述代码中,我们创建了一个新视图TabberView,然后声明了一个变量selectedIndex,用来判断当前点击的是哪一个栏目。

样式部分,我们创建了5个按钮,设置了按钮的颜色和尺寸,除了“发布文章”按钮外,其他按钮都跟随selectedIndex变量切换颜色,用于辨别点击的是哪一个按钮。

然后我们在ContentView上也需要使用@State声明selectedIndex变量,做双向绑定。示例:

@State var selectedIndex: Int = 0

最后在ContentView视图上构建样式,示例:

VStack {
    Spacer()
    TabberView(selectedIndex: $selectedIndex)
}

image.png

小结

如果稀土掘金App要更新发布文章功能,入口无非就是以上3种其中一种。当然要实现在客户端写文章并且发布,功能、交互、逻辑没有那么简单,在此只是因为看到群里聊天话题就顺手写了篇文章,也算是一种总结和学习。

至于最终使用哪一种方式,好与不好,也欢迎大家留下宝贵的建议~

快来动手试试吧。


相关文章
|
3天前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
26天前
|
安全 定位技术 API
婚恋交友系统匹配功能 婚恋相亲软件实现定位 语音社交app红娘系统集成高德地图SDK
在婚恋交友系统中集成高德地图,可实现用户定位、导航及基于地理位置的匹配推荐等功能。具体步骤如下: 1. **注册账号**:访问高德开放平台,注册并创建应用。 2. **获取API Key**:记录API Key以备开发使用。 3. **集成SDK**:根据开发平台下载并集成高德地图SDK。 4. **配置功能**:实现定位、导航及基于位置的匹配推荐。 5. **注意事项**:保护用户隐私,确保API Key安全,定期更新地图数据,添加错误处理机制。 6. **测试优化**:完成集成后进行全面测试,并根据反馈优化功能。 通过以上步骤,提升用户体验,提供更便捷的服务。
|
30天前
|
PHP
全新uniapp小说漫画APP小说源码/会员阅读/月票功能
价值980的uniapp小说漫画APP小说源码/会员阅读/月票功能
94 20
|
26天前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
28天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
122 3
|
1月前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
161 6
|
28天前
|
小程序 安全 网络安全
清晰易懂!陪玩系统源码搭建的核心功能,陪玩小程序、陪玩app的搭建步骤!
陪玩系统源码包含多种约单方式、实时语音互动、直播间与聊天室、大神申请与抢单、动态互动与社交及在线支付与评价等核心功能。搭建步骤包括环境准备、源码上传与解压、数据库配置、域名与SSL证书绑定、伪静态配置及后台管理。注意事项涵盖源码安全性、二次开发、合规性和技术支持。确保平台安全、合规并提供良好用户体验是关键。
|
2月前
|
缓存 容器 Perl
【Azure Container App】Container Apps 设置延迟删除 (terminationGracePeriodSeconds) 的解释
terminationGracePeriodSeconds : 这个参数的定义是从pod收到terminated signal到最终shutdown的最大时间,这段时间是给pod中的application 缓冲时间用来处理链接关闭,应用清理缓存的;并不是从idel 到 pod被shutdown之间的时间;且是最大时间,意味着如果application 已经gracefully shutdown,POD可能被提前terminated.
|
2月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码服务器环境配置及app功能
一对一直播源码阿里云服务器环境配置及要求
|
2月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。

热门文章

最新文章