九宮格的計算思路,九宮格計算思路

來源:互聯網
上載者:User

九宮格的計算思路,九宮格計算思路

(以片在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)];

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.