九宮格的計算思路,九宮格計算思路
(以片在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值
小細節、碎知識:
程式碼範例(此代碼是從一整段代碼中截取,整段代碼實現的功能是:點擊添加按鈕,向面板中添加商品,商品總數共兩行三列):
註: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)];