第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)問我這樣直接除下來和上面有什么不同的? 第一個(gè)算法是什么意思呢?

請(qǐng)問我這樣直接除下來和上面有什么不同的? 第一個(gè)算法是什么意思呢?

iOS
拉丁的傳說 2023-05-01 15:11:39
看到網(wǎng)上很多都是這樣寫的:CGFloat pageWidth = self.scrollView.frame.size.width;int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;但是我這樣也可以:self.scrollView.contentOffset.x/pageWidth
查看完整描述

2 回答

?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

舉個(gè)例子吧
一頁的width為320
用方法1的結(jié)果
情況1:
contentoffset小于320+160,即在第二頁的左半部分,(self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth的結(jié)果是0.xxxx,floor結(jié)果為0,計(jì)算結(jié)果為1,即會(huì)回到第一頁
情況2:
contentoffset大于320+160,即在第二頁的右半部分,(self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth的結(jié)果是1.xxxx,floor結(jié)果為1,page計(jì)算結(jié)果為2,即會(huì)進(jìn)入第二頁 

用方法2的結(jié)果
self.scrollView.contentOffset.x/pageWidth計(jì)算結(jié)果都為1.xxx
而page是int類型,系統(tǒng)根據(jù)四舍五入自動(dòng)強(qiáng)制轉(zhuǎn)型 

以上為個(gè)人理解。


查看完整回答
反對(duì) 回復(fù) 2023-05-04
?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

先看表達(dá)式:(self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth
由于pageWidth和contentOffset.x都是浮點(diǎn)數(shù),所以做除法精度影響可以忽略,因此對(duì)表達(dá)式可以將除法拆開.
令self.scrollView.contentOffset.x=x, pageWidth=w則:
(x-w/2)/w => x/w - w/2/w => x/w - 0.5, 所以最終表達(dá)式為:
floor(x/w - 0.5)+1
所以最終結(jié)果就是 floor(self.scrollView.contentOffset.x/pageWidth - 0.5)+1
+1是為了讓下表從1開始
floor是向上取整和-0.5放在一起的目的是為了四舍五入
四舍五入是為了讓交互更自然,就是用戶如果滑過了pageWidth的一半,那么就滾動(dòng)到下一頁,否則就是當(dāng)前頁.
真想不通寫這么復(fù)雜干嘛.
推薦一種不需要調(diào)函數(shù)的常用寫法(int)(x/w+0.5)+1

查看完整回答
反對(duì) 回復(fù) 2023-05-04
  • 2 回答
  • 0 關(guān)注
  • 400 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)