不使用Apple原生基础View组件 能否自定义实现View协议?
问题解答
无法实现你想要的完全脱离苹果原生视图的自定义View实现,具体原因如下:
- SwiftUI的
View是描述型协议,本身不包含任何渲染逻辑,所有可被渲染到屏幕上的视图底层渲染能力,全部由苹果封闭在系统框架内部,没有对外暴露可供开发者直接构造基础渲染单元的接口。 - 遵循
View协议的唯一要求就是实现body属性,且body的返回值必须同样是符合View协议的类型。如果你完全不使用苹果提供的Text、Image、Shape、Color等原生基础视图,也不使用由这些基础视图组合派生而来的视图,你根本无法构造出符合View协议要求的body返回值,代码会直接触发编译错误。 - 你能实现的最接近「自定义绘制」的方案,是使用苹果提供的
Canvas视图或者Shape协议,在它们开放的图形上下文中调用CoreGraphics接口自行绘制内容,但这种实现本质上还是依赖了苹果原生的基础视图,并不符合你要求的「不使用Apple提供的原生视图及派生视图」的前提。
错误示例(编译直接报错):
struct MyView: View { var body: some View { // 无符合View协议的返回值,编译不通过 } }
内容的提问来源于stack exchange,提问作者user15880837
相关产品推荐
相关产品推荐

