讓iPhone也能popup的效果

開發(fā)過iPad的同學(xué)知道UIPopoverController,這個可是針對iPad的專用API如果使用在iPhone大多數(shù)會報錯誤禾酱。在AutoLayout的帶領(lǐng)下涣雕,蘋果所有界面在走向統(tǒng)一化四苇,一些API也開始統(tǒng)一已骇,UIPopoverPresentationController就是這樣的一個東東离钝。

UIPopoverPresentationController繼承UIPresentationController,是IOS8新引用的一個類票编,thanks god,蘋果推出了IOS9后設(shè)備的遷移近40%,放棄IOS7的同學(xué)們可以試試這個類了卵渴。

以前如果在iPhone上做一個popOver的效果是比較費(fèi)力的慧域,如果一套UI Code想適配iPhone和iPad在popOver上估計你得這么寫

if(is_iPad){
   UIPopoverController ....
}else{
   [self presentController...]
}

但是有了UIPopoverPresentationController后我們就也可以在iPhone來用了。

看一個iPhone上面的效果

Simulator Screen Shot Oct 17, 2015, 2.54.35 PM.png

這個和iPad上的效果是一樣一樣的±硕粒現(xiàn)在我們可以這么做昔榴,先用storyboard實(shí)現(xiàn)一下

Untitled.png

我們到紅色的vc控制器中配置要顯示的效果,默認(rèn)的如果什么都不做在iPad上會popover出來碘橘,但是在iPhone上會以presentModel的方式被呈現(xiàn)出來互订,現(xiàn)在我們配置這個視圖讓它以popover的方式彈出來


- (void)configPopover{
    self.modalPresentationStyle = UIModalPresentationPopover;
    UIPopoverPresentationController *popvc = self.popoverPresentationController;

    popvc.delegate = self;
}

//以下是對UIPopoverPresentationControllerDelegate的實(shí)現(xiàn)
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection{
    return UIModalPresentationNone;
}

- (BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
    return YES;
}

注意兩點(diǎn)

  • configPopover需要在視圖加載前就做執(zhí)行,可以放到initWithCoder中
  • 第一個代理是UIPresentationControllerDelegate的代理蛹屿,這里面?zhèn)鬟f了UITraitCollection,可以根據(jù)方向選擇屁奏,第二個代理可以配置是否要在點(diǎn)視圖以外的地方來dissmiss視圖岩榆。

如果是純code的話可以這么寫

    UIViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"byCode"];
    if (vc) {
        vc.modalPresentationStyle = UIModalPresentationPopover;
        UIPopoverPresentationController *popvc = vc.popoverPresentationController;
        popvc.permittedArrowDirections = UIPopoverArrowDirectionAny;
        popvc.barButtonItem = sender;
        popvc.delegate = self;
        [self presentViewController:vc animated:YES completion:nil];
    }

UIPopoverPresentationController如果要要彈出需要有一個錨點(diǎn)错负,可以看它的屬性里面有sourceRect,sourceView 均可用來popup視圖。
對于一些簡單的視圖你可以做的很小勇边,可以通過preferredContentSize設(shè)置要彈出的view的大小犹撒,比如上面的需要添加一句
vc.preferredContentSize = CGSizeMake(200, 200);,popup出來的view就是一個小方塊粒褒。

總結(jié)一下

  • 獲取要彈出的ViewController识颊,設(shè)置他的要彈出的方式
  • 設(shè)置彈出的方向,位置奕坟,大小
  • 如果想控制默認(rèn)顯示方式祥款,需要實(shí)現(xiàn)ViewController的popoverPresentationController的代理
  • 使用presentViewController方法彈出
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市月杉,隨后出現(xiàn)的幾起案子刃跛,更是在濱河造成了極大的恐慌,老刑警劉巖苛萎,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桨昙,死亡現(xiàn)場離奇詭異,居然都是意外死亡腌歉,警方通過查閱死者的電腦和手機(jī)蛙酪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翘盖,“玉大人桂塞,你說我怎么就攤上這事♀裳保” “怎么了阁危?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵炊甲,是天一觀的道長。 經(jīng)常有香客問我欲芹,道長卿啡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任菱父,我火速辦了婚禮颈娜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浙宜。我一直安慰自己官辽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布粟瞬。 她就那樣靜靜地躺著同仆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裙品。 梳的紋絲不亂的頭發(fā)上俗批,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音市怎,去河邊找鬼岁忘。 笑死,一個胖子當(dāng)著我的面吹牛区匠,可吹牛的內(nèi)容都是我干的干像。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼驰弄,長吁一口氣:“原來是場噩夢啊……” “哼麻汰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起戚篙,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤五鲫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后已球,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臣镣,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年智亮,在試婚紗的時候發(fā)現(xiàn)自己被綠了忆某。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡阔蛉,死狀恐怖弃舒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤聋呢,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布苗踪,位于F島的核電站,受9級特大地震影響削锰,放射性物質(zhì)發(fā)生泄漏通铲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一器贩、第九天 我趴在偏房一處隱蔽的房頂上張望颅夺。 院中可真熱鬧,春花似錦蛹稍、人聲如沸吧黄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拗慨。三九已至,卻和暖如春奉芦,著一層夾襖步出監(jiān)牢的瞬間赵抢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工仗阅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昌讲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓减噪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親车吹。 傳聞我的和親對象是個殘疾皇子筹裕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容