亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Xcode 9安全區

Xcode 9安全區

暮色呼如 2019-07-10 10:41:58
Xcode 9安全區在探索中Xcode9 Beta發現安全區在界面構建器視圖層次結構查看器上。這位醫生說,對Apples文檔中的安全區感到好奇,并試圖了解它的安全范圍。“與自動布局直接交互的視圖區域”但它并沒有讓我滿意,我想知道這個新事物的實際用途。有人有線索嗎?結論:蘋果文檔中的段落為安全區。UILayoutGuide類設計用于執行以前由虛擬視圖執行的所有任務,但要以更安全、更有效的方式執行。布局指南不定義新視圖。它們不參與視圖層次結構。相反,他們只是在自己視圖的坐標系統中定義了一個矩形區域,可以與自動布局交互。
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

我想提一下當我試圖調整一個基于SpriteKit的應用程序,以避免新的iphone X的圓角和“凹槽”時,我第一次被抓住,正如最新的建議。人機界面指南*新財產safeAreaLayoutGuideUIView需要詢問視圖已添加到層次結構中(例如,在-viewDidAppear:)為了報告有意義的布局框架(否則,它只返回整個屏幕大小)。

從財產的文件:

表示視圖中不被條形條和其他內容遮掩的部分的布局指南。當視圖在屏幕上可見時,本指南反映了導航欄、選項卡條、工具欄和其他祖先視圖未涵蓋的視圖部分。(在tvOS中,安全區反映沒有覆蓋屏幕邊框的區域。)如果視圖當前未安裝在視圖層次結構中,或尚未在屏幕上顯示,則布局指南邊緣與視圖邊緣相等。.

(強調地雷)

如果你早讀到-viewDidLoad:layoutFrame指南將是{{0, 0}, {375, 812}}而不是預期的{{0, 44}, {375, 734}}


查看完整回答
反對 回復 2019-07-10
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

  • 早些時候在IOS 7.0-11.0中<

    棄用UIKit

    使用

    TopLayoutGuide & 底層指南

    那就是

    UIView

    財產
  • iOS 11+用途安全AreaLayoutGuide這也是UIView財產

  • 使能安全區布局指南來自文件檢查器的復選框。

  • 安全區域可以幫助您將視圖放置在整個界面的可見部分中。

  • 在……里面視頻流安全區域還包括屏幕的過掃描接口,表示屏幕邊框覆蓋的區域。

  • SecurityAreaLayoutGuide反映視圖中未被導航條、選項卡條、工具欄和其他祖先視圖覆蓋的部分。
  • 使用安全區域作為布局您的內容的幫助,如UIButton等。

  • 在為iPhoneX設計時,您必須確保布局填充屏幕,并且不會被設備的圓角、傳感器外殼或訪問主屏幕的指示器所掩蓋。

  • 確保背景延伸到顯示的邊緣,垂直滾動布局,如表和集合,一直延續到底部。

  • iPhoneX上的狀態欄比其他iPhone高。如果應用程序采用固定的狀態欄高度來定位狀態欄以下的內容,則必須更新應用程序,以便根據用戶的設備動態定位內容。請注意,當語音記錄和位置跟蹤等后臺任務處于活動狀態時,iPhoneX上的狀態欄不會更改高度print(UIApplication.shared.statusBarFrame.height)//44 for iPhone X, 20 for other iPhones

  • 家用指示器容器高度為34點。

  • 一旦你啟用安全區布局指南您可以看到接口生成器中列出的安全區域約束屬性。

可以設置相應的約束。self.view.safeAreaLayoutGuide作為-

objc:

  self.demoView.translatesAutoresizingMaskIntoConstraints = NO;
    UILayoutGuide * guide = self.view.safeAreaLayoutGuide;
    [self.demoView.leadingAnchor constraintEqualToAnchor:guide.leadingAnchor].active = YES;
    [self.demoView.trailingAnchor constraintEqualToAnchor:guide.trailingAnchor].active = YES;
    [self.demoView.topAnchor constraintEqualToAnchor:guide.topAnchor].active = YES;
    [self.demoView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor].active = YES;

斯威夫特

   demoView.translatesAutoresizingMaskIntoConstraints = false
        if #available(iOS 11.0, *) {
            let guide = self.view.safeAreaLayoutGuide
            demoView.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
            demoView.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
            demoView.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
            demoView.topAnchor.constraint(equalTo: guide.topAnchor).isActive = true
        } else {
            NSLayoutConstraint(item: demoView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier:
             1.0, constant: 0).isActive = true
            NSLayoutConstraint(item: demoView, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier:
             1.0, constant: 0).isActive = true
            NSLayoutConstraint(item: demoView, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier:
             1.0, constant: 0).isActive = true
            NSLayoutConstraint(item: demoView, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier:
             1.0, constant: 0).isActive = true
        }


查看完整回答
反對 回復 2019-07-10
  • 3 回答
  • 0 關注
  • 644 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號