您的位置:首页 > 其它

开发中总结的一些小的知识点,陆续更新中

2016-03-18 13:49 211 查看
1⃣️

__VA_ARGS__

在GNU C中 红可以接受可变数目的参数 就像函数一样

可以把
__VA_ARGS__看成是将赋值给该宏

//注意这里不能在函数中调用abc()

#include <stdio.h>

#include <stdarg.h>

#define ABC(...) printf(__VA_ARGS__)

/*void abc(...)

{

//printf(__VA_ARGS__);

}*/

int main()

{

ABC("%s\n","hello");

return 0;

}

宏是可以接受可变参数 而不是用函数(函数中涉及的可变数目参数问题需要用到va_list)

另外 是一个可变参数的宏 这个宏是在新的C99规范中新增的 目前似乎只有gcc支持(VC6.0的编译器不支持) 宏前面加上##的作用在于 当这个可变参数的个数为0时,这里的##起到把前面多余的””去掉的作用力 否则会编译出错

2⃣️

2) __FILE__ 宏在预编译时会替换成当前的源文件名

3) __LINE__宏在预编译时会替换成当前的行号

4) __FUNCTION__宏在预编译时会替换成当前的函数名称

3⃣️

IOS
alpha导致subview也透明了(opacity)

当要背景颜色透明的时候,alpha导致subview也透明了解决方法
(相当于改变uicolor的透明属性)
1.xib中的background color 选others 里面有个opacity

2.代码:backgroundColor = [uicolor colorwithRed:xx green:xx blue:xx alpha:xx];

4⃣️
size_t在32位系统中是四字节的,在64位系统中是8字节 可以使用这个类型增加程序的移植性
size_t一般用来表示一种计数,比如有多少东西被拷贝等。例如:sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小。 它的意义大致是“适于计量内存中可容纳的数据项目个数的无符号整数类型”。所以,它在数组下标和内存管理函数之类的地方广泛使用。

5⃣️

opaque透明

6⃣️

MBProgressHUD中定义的MBProgressHUDMode枚举,它用来表示HUD窗口的模式

typedefenum{//
使用UIActivityIndicatorView来显示进度,这是默认值
MBProgressHUDModeIndeterminate,//
使用一个圆形饼图来作为进度视图
MBProgressHUDModeDeterminate,//
使用一个水平进度条
MBProgressHUDModeDeterminateHorizontalBar,//
使用圆环作为进度条
MBProgressHUDModeAnnularDeterminate,//
显示一个自定义视图,通过这种方式,可以显示一个正确或错误的提示图
MBProgressHUDModeCustomView,//
只显示文本
MBProgressHUDModeText}MBProgressHUDMode;

一个MBProgressHUD视图主要由四个部分组成:

loading动画视图 标题文本框(label) 详情文本框(detailsLabel) HUD背景框

// 背景框的透明度,默认值是0.8

@property (assign) float opacity;

// 背景框的颜色

// 需要注意的是如果设置了这个属性,则opacity属性会失效,即不会有半透明效果

@property (MB_STRONG) UIColor *color;

// 背景框的圆角半径。默认值是10.0

@property (assign) float cornerRadius;

// 标题文本的字体及颜色

@property (MB_STRONG) UIFont* labelFont;

@property (MB_STRONG) UIColor* labelColor;

// 详情文本的字体及颜色

@property (MB_STRONG) UIFont* detailsLabelFont;

@property (MB_STRONG) UIColor* detailsLabelColor;

// 菊花的颜色,默认是白色

@property (MB_STRONG) UIColor *activityIndicatorColor;

dimBackground,用于为HUD窗口的视图区域覆盖上一层径向渐变(radial gradient)层,其定义如下:

@property (assign) BOOL dimBackground;

MBProgressHUD提供了几个属性,可以让我们控制HUD的布局,这些属性主要有以下几个:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15
// HUD相对于父视图中心点的x轴偏移量和y轴偏移量


@property (assign) float xOffset;


@property (assign) float yOffset;


// HUD各元素与HUD边缘的间距


@property (assign) float margin;


// HUD背景框的最小大小


@property (assign) CGSize minSize;


// HUD的实际大小


@property (atomic, assign, readonly) CGSize size;


// 是否强制HUD背景框宽高相等


@property (assign, getter = isSquare) BOOL square;


需要注意的是,MBProgressHUD视图会充满其父视图的frame内,为此,在MBProgressHUD的layoutSubviews方法中,还专门做了处理,如下代码所示:

1

2

3

4

5

6

7

8

9

10

11
- (void)layoutSubviews {


[
super
layoutSubviews];


// Entirely cover the parent view


UIView *parent = self.superview;


if
(parent) {


self.frame = parent.bounds;


}


...


}


7⃣️

UIActivityIndicatorView

1.初始化的时候不需要设置尺寸 设置尺寸也没有效果

2.必须调用startAnimating才会显示UIActivityIndicatorView

// 初始化指示器

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

// 设置指示器位置

indicator.center = CGPointMake(self.view.frame.size.width * 0.5, self.view.frame.size.height * 0.5);

// 开启动画,必须调用,否则无法显示

[indicator startAnimating];

[self.view addSubview:indicator];

8⃣️

__nullable和__nonnull。从字面上我们可以猜到,__nullable表示对象可以是NULL或nil,而__nonnull表示对象不应该为空。

9⃣️

简单点说就是automaticallyAdjustsScrollViewInsets根据按所在界面的status bar,navigationbar,与tabbar的高度,自动调整scrollview的 inset,设置为no,不让viewController调整。

self.automaticallyAdjustsScrollViewInsets=NO;

// 这个方法目的:根据所在界面的bar
navigationbar与tabbar的高度,自动调整scrollView的inset,设置为no,不让viewController调整问题在于:自定义了一个navigationbar,因系统自动判断并适配,改为no才能实现相应的效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: