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


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⃣️

当要背景颜色透明的时候,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窗口的模式
typedef enum { // 使用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 才能实现相应的效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值