iOS(UI)

## 九宮格計算思路

- 利用控件的索引index計算出控件所在的行號和列號

- 利用列號計算控件的x值

- 利用行號計算控件的y值

eg:

// 每一個商品的尺寸

CGFloat shopW = 80;

CGFloat shopH = 90;

// 一行的列數(shù)

int cols = 3;

// 每一列之間的間距

CGFloat colMargin = (self.shopsView.frame.size.width - cols * shopW) / (cols - 1);

// 每一行之間的間距

CGFloat rowMargin = 10;

// 創(chuàng)建一個父控件(整體:存放圖片和文字)

UIView *shopView = [[UIView alloc] init];

shopView.backgroundColor = [UIColor redColor];

// 商品的索引

NSUInteger index = self.shopsView.subviews.count;

// 商品的x值

NSUInteger col = index % cols;

CGFloat shopX = col * (shopW + colMargin);

// 商品的y值

NSUInteger row = index / cols;

CGFloat shopY = row * (shopH + rowMargin);

shopView.frame = CGRectMake(shopX, shopY, shopW, shopH);

[self.shopsView addSubview:shopView];

## HUD

- 其他說法:指示器、遮蓋、蒙板

- 半透明HUD的做法

- 背景色設置為半透明顏色

## 定時任務

- 方法1:performSelector

```objc

// 1.5s后自動調(diào)用self的hideHUD方法

[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];

```

- 方法2:GCD

```objc

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

// 1.5s后自動執(zhí)行這個block里面的代碼

self.hud.alpha = 0.0;

});

```

- 方法3:NSTimer

```objc

// 1.5s后自動調(diào)用self的hideHUD方法

[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];

// repeats如果為YES,意味著每隔1.5s都會調(diào)用一次self的hidHUD方法

```

## 常見問題

- 項目里面的某個.m文件無法使用

- 檢查:Build Phases -> Compile Sources

- 項目里面的某個資源文件(比如plist、音頻等)無法使用

- 檢查:Build Phases -> Copy Bundle Resources

## 模型

- 什么是模型?

- 專門用來存放數(shù)據(jù)的對象

- 一般都是一些直接繼承自NSObject的純對象

- 內(nèi)部會提供一些屬性來存放數(shù)據(jù)

## 一個控件看不見有哪些可能?

- 寬度或者高度其實為0

- 位置不對(比如是個負數(shù)或者超大的數(shù),已經(jīng)超出屏幕)

- hidden == YES

- alpha <= 0.01

- 沒有設置背景色、沒有設置內(nèi)容

- 可能是文字顏色和背景色一樣

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容