(以下圖片在IE瀏覽器中可能無法顯示) 在開始筆記之前先加點之前記下的小知識點: UIView的常見屬性和方法: 1.@property(nonatomic,radonly)UIView *superview; 獲得自己的父控制項對象 2.@property (nonatomic,radonly,co ...
(以下圖片在IE瀏覽器中可能無法顯示)
在開始筆記之前先加點之前記下的小知識點:
UIView的常見屬性和方法:
1.@property(nonatomic,radonly)UIView *superview;
獲得自己的父控制項對象
2.@property (nonatomic,radonly,copy)NSArray *subviews;
獲得自己的所有子控制項的對象(數組元素的順序決定著子控制項的顯示層級順序-下標越大的越顯示在上面)
3.-(void)addSubview:(UIView *)view;
添加一個子控制項view
4.-(void)removeFromSuperView;
從父控制項中移除
5.-(UIView *)viewWithTag:(NSInteger)tag;
根據一個tag標識找出對應的控制項(一般都是子控制項)
6.@property(nonatomic)CGRect frame;
控制項舉行框在父控制項中的位置和尺寸(以父控制項的左上角為坐標原點)
7.@property(nonatomic)CGRect bounds;
控制項矩形框的位置和尺寸(以自己的左上角為坐標原點,所以bounds的x,y一般為0)
8.@property(nonatomic)CGRect center;
控制項中點的位置(以父控制項的左上角為坐標原點)
下麵開始今天的筆記--九宮格的計算思路:
- 利用控制項的索引index計算出控制項所在的行號和列號
- 利用列號計算控制項的x值
- 利用行號計算控制項的y值
小細節、碎知識:
- 當添加多個控制項時,控制項的索引即為該控制項所在數組長度
-
某個控制項所在列數為該控制項的索引號對總列數取餘;所在行數為該控制項的索引號對總行數取模
代碼示例(此代碼是從一整段代碼中截取,整段代碼實現的功能是:點擊添加按鈕,向面板中添加商品,商品總數共兩行三列):
- 先創建一個名為shopView的面板(即上圖中的方塊),用於存放圖片和文字
註:shopViewW,shopViewH為先前定義過的確定數,shopX,shopY為後來計算得到。
2.每點擊一次按鈕,就將一個商品添加到下個位置,每個商品的寬x2是固定的,因此為了計算下一個商品的x值,應先計算出x3的值,
這樣,方塊幾的x值就是幾倍的(x2+x3)的值。
註:shopsView為定義shopView的父控制項,相當於上圖中方塊後面的白色背景面板。
到此,九宮格的計算思路和方法全部結束。
補充知識(以下均以shopsView為父控制項):
1.將超出父控制項邊界的控制項減掉:self.shopsView.clipsToBounds = YES;
2.取數組中的最後一個數據:[shopsView.subViews lastObject]
3.刪除父控制項中的最後一個view:[[shopsView.subViews lastObject] removeFromSuperview];
4.HUD:
又名:指示器/蒙版/遮蓋
用於指示用戶發生了什麼事情。例如手機上會出現的“網路不穩定”這種提示。
定時任務小總結:
1.performSelector
[self performSelector:(nonnull SEL) withObject:(nullable id) afterDelay:(NSTimeInterval)];
第一個參數指對方法的包裝,使用時傳@selector(方法名)
第二個參數會傳給調用的方法里的參數,如果方法中無參數,則為nil
第三個參數填寫時間-秒,實際是一個double值。
2.GUD
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
code to be executed after a specified delay
});
這裡需要填的只有兩處,即‘delayInSeconds’處填秒數,{}里填寫代碼,指‘delayInSeconds’秒後執行{}里的代碼。
3.NSTimer
[NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval) target:(nonnull id) selector:(nonnull SEL) userInfo:(nullable id) repeats:(BOOL)];