首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >胡枝子与CGSize?

胡枝子与CGSize?
EN

Stack Overflow用户
提问于 2014-03-02 09:13:32
回答 4查看 563关注 0票数 1

我有不同的页码。我想使用枚举来选择页面的大小。有人这样想

代码语言:javascript
运行
复制
 typedef NS_ENUM(CGSize, SizeType) {
    MAXSIZE=CGSizeMake(640, 1196),
    MIDIUMSIZE=CGSizeMake(320, 590),
    MINSIZE=CGSizeMake(160, 280)
};

有可能吗?如果不是,那么做这个的最佳方法是什么?我需要在我的整个应用程序中使用这个组合值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-02 09:27:19

根据其他答案,枚举基本上是整数,而不是结构。

您只需在常量文件中#define这些值:

代码语言:javascript
运行
复制
#define MAXSIZE CGSizeMake(640, 1196)
#define MIDIUMSIZE CGSizeMake(320, 590)
#define MINSIZE CGSizeMake(160, 280)

尽管为了便于记忆、可读性和自动完成功能,您可能希望重命名它们,例如:

代码语言:javascript
运行
复制
#define PURPOSE_SIZE_MAX ...
#define PURPOSE_SIZE_MED ...
...
票数 3
EN

Stack Overflow用户

发布于 2014-03-02 09:28:55

C中的enum (因此在Objective中)是一组整数值,这就是为什么不能将CGSize值作为其成员。

相反,使用常量。最好的选择就是看看苹果做了什么,然后模仿它。如果您查看一下CGGeometry.h,您会发现各种常量的定义。

例如,CGSizeZero被定义为

代码语言:javascript
运行
复制
CG_EXTERN const CGSize CGSizeZero
  CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

然后,您可以通过在标头中声明一个常量来做类似的事情。

代码语言:javascript
运行
复制
CG_EXTERN const CGSize kMaxSize;

然后在实现中定义它。

代码语言:javascript
运行
复制
const CGSize kMaxSize = (CGSize){ 640, 1196 };

另外,您还可以为CGSize定义一个类型同义词,例如:

代码语言:javascript
运行
复制
typedef CGSize MySizeType;

然后将其用于声明常量和变量。

代码语言:javascript
运行
复制
CG_EXTERN const MySizeType kMaxSize;
...
@property (nonatomic) MySizeType aSize;

从技术角度看,这一点没有什么变化,但它在语义上更好,基本上达到了typedef enum的相同目的(这正好为int提供了一个方便的同义词)

票数 5
EN

Stack Overflow用户

发布于 2014-03-02 09:19:46

你不能。枚举类型是C类型,它必须是整数类型,每个成员也必须是相同的类型。您可以使用char、BOOL、int、uint、NSInteger等等。

对于常量浮点值,您需要逐一声明它们。

结构也需要一个接一个地完成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22125800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档