1. 程式人生 > >設定tableView固定位置和尺寸---automaticallyAdjustsScrollViewInsets

設定tableView固定位置和尺寸---automaticallyAdjustsScrollViewInsets

最近在做專案的時候遇到了一個令人鬱悶的問題,我想在ViewController裡新增一個tableView,並把tableView設定

一個固定的尺寸和位置時,發現結果並不是我所預料的那樣,為什麼cell的頂部沒有於tableView的頂部對齊呢,

這是個很令人鬱悶的問題啊

為了能夠看出明顯的效果,這裡我設定ViewController的背景色為藍色,設定tableView的背景色為黃色,而

cell的背景顏色預設的為白色,並設定了四條資料,並固定了每個cell的高度

//建立tableView並設定tableView在Controller上的尺寸和位置
- (void)createTableView
{
    self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 200, ScreenWidth, 260) style:UITableViewStylePlain];
    
    self.tableView.backgroundColor = [UIColor yellowColor];
    
    self.tableView.dataSource = self;
    self.tableView.delegate = self;
    
    [self.view addSubview: self.tableView];
}

結果如下:

             

怎麼會這樣呢,查找了很多的資料,也看了一些官方的API後發現,在ios7 Controller新增了一些屬性

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0);
 // Defaults to YES
<span style="font-family: 'PingFang SC'; background-color: rgb(255, 255, 255);">按照字面的解釋應該是:自動適應scrollView的Insets並且它的預設值是YES,</span><span style="font-family: 'PingFang SC'; line-height: normal;">如果你不想讓</span><span style="line-height: normal; font-family: Arial;">scroll view</span><span style="font-family: 'PingFang SC'; line-height: normal;">的內容自動調整,</span>

將這個屬性設為NO(預設值YES)自動調整scrollView的inset,設定為NO,不讓ViewController調整,我們自己修改佈局

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor blueColor];
    self.navigationItem.title = @"個人中心";
    //設定為NO,取消系統預設的佈局,我們可以自己對ViewController佈局
    self.automaticallyAdjustsScrollViewInsets = NO;
    
    [self createTableView];
}
再次執行我們的程式發現這才是我們預想的效果:


當然讀者可以自己嘗試一下,我們平時往ViewController裡新增tableView時,都是填充整個viewController,

//建立tableView並設定tableView在Controller上的尺寸和位置
- (void)createTableView
{
    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    
    self.tableView.backgroundColor = [UIColor yellowColor];
    
    self.tableView.dataSource = self;
    self.tableView.delegate = self;
    
    [self.view addSubview: self.tableView];
}
結果如下:


如果在- (void)viewDidLoad內新增

//設定為NO,取消系統預設的佈局,我們可以自己對ViewController佈局
    self.automaticallyAdjustsScrollViewInsets = NO;
你會發現這並不是我們所要的結果:


此時你會發現,我們的tableView被NavigationController遮住了

self.automaticallyAdjustsScrollViewInsets = NO;

看到這裡你應該就會明白什麼了吧。此屬性預設為YES,這樣ViewController下如果只有一個scollView或者其子類,那麼

會自動留出空白,讓scrollView滾動經過各種bar下時能隱約看到內容。如果我們要想自己設定tableView的尺寸和位置就需要

將此屬性設定為NO,自己去控制留白一極座標的問題

相關推薦

設定tableView固定位置尺寸---automaticallyAdjustsScrollViewInsets

最近在做專案的時候遇到了一個令人鬱悶的問題,我想在ViewController裡新增一個tableView,並把tableView設定 一個固定的尺寸和位置時,發現結果並不是我所預料的那樣,為什麼cell的頂部沒有於tableView的頂部對齊呢, 這是個很令人鬱悶的

快捷位置尺寸

nth 兼容 span 分享 數據 尺寸 div tel 自己的 一、DOM語句提供給我們計算後樣式,但是還是覺得不太方便,因為通過計算後的樣式得到的屬性值都是字符串格式,不能直接參與程序計算。 所以DOM又提供了一些API:得到的是number類型的數據,是可以直接進行計

神經網路設定層的數量尺寸

神經網路七:神經網路設定層的數量和尺寸 本文就現在神經網路中層的數量和尺寸,分析其中的優缺點。在此特宣告,本文的內容是來自:CS231n課程筆記翻譯:神經網路筆記1(下) 智慧單元 - 知乎專欄。因本人有時會查閱這些相關的知識點,一直翻文件比較麻煩,特從文件中摘錄複製寫到部落格中

NSRect 位置尺寸

rect str 表示 size gre width 調用 函數 等價 前言 結構體 這個結構體用來表示事物的坐標點和寬高度。 typedef CGRect NSRect; struct CGRect { CGPoint origin; CGSize

JavaScript獲取DOM元素位置尺寸大小

在一些複雜的頁面中經常會用JavaScript處理一些DOM元素的動態效果,這種時候我們經常會用到一些元素位置和尺寸的計算,瀏覽器相容性問題也是不可忽略的一部分,要想寫出預想效果的JavaScript程式碼,我們需要了解一些基本知識。 基礎概念 為了方便理解,我們需要了解幾個基礎概念,每個HTML元素

MFC 設定控制元件位置大小

初始化對話方塊大小: ::SetWindowPos(this->m_hWnd, HWND_BOTTOM, 0, 0, 100, 500, SWP_NOZORDER); 最近經常要用到改變控制元件在對話方塊上的位置和大小,一直找不到有效的方法,查看了很多資料。這篇

51微控制器中將變數、陣列、函式設定固定位置,定位到絕對地址

一、不帶初值的變數或陣列 直接使用_at_ 關鍵字加上地址就行。 如:  unsigned char idata myvar _at_ 0x40;  unsigned char code myvar[10] _at_ 0x40; _at_ 關鍵字

Excel怎樣從字串中提取位置長度不固定的數字

最近上課的時候,常常有學員諮詢怎樣從Excel字元中提取位置和長度都不固定的數字,今天我們分兩種情況來聊一聊對應的解決方案。 情況1:數字前後有特定的分隔符 如果數字前後有特定的分隔符,比如()、##等分隔符,那麼我們可以通過查詢這些分隔符的位置,來定位到數字的位置。 比如下圖所示的這個

Android 設定狀態列的的固定顏色圖片填充

一,狀態列設定固定的顏色 設定style.xml 的樣式 <style name="ColorTranslucentTheme" parent="Theme.AppComp

指令碼設定IP bat 命令列設定自動獲取IP固定IP

由於辦公室網路需要固定IP和DNS才能上網, 在連線公共網路或者家裡又需要自動獲取IP和DNS才能上網。 頻繁手動切換很麻煩,就搞了兩個指令碼一鍵設定。 1.新建文字檔案, 命名為固定IP.bat 複製指令碼 @echo //-=-=-=-=-=-=-=-=-=-=-=-=-=-= @echo // 【固定

android 在java程式碼中動態設定控制元件的位置設定片大小

需要動態改變佈局裡面控制元件的相對位置 如: 1.改變RelativeLayout佈局裡面某個控制元件的layout_toLeftOf 的屬性 RelativeLayout.Layoutparams params = (RelativeLayout.LayoutParams)view

Android設定SurfaceView任意大小任意位置

                1. 程式碼    public void init() {                // FrameLayout        ViewGroup.LayoutParams framelayout_params =            new ViewGroup.La

如何使用set來設定按鈕的大小位置,以及一些屬性

b1 = new Button("go on"); //宣告一個按鍵 Frame f = new Frame("bu"); f.setLayout(null); f.setSize(300

CSS設定元件固定在頂部固定在右下角

固定在頂部 position: fixed;/*固定位置*/ top:expression(documentElement.scrollTop + "px"); z-index:9999;/*設定優先順序顯示,保證不會被覆蓋*/ 將多個元件固定在右下角 /*

jQuery元素的尺寸位置頁面滾動事件

bbc left ESS div roc box off solid 頁面 1.獲取和設置元素的尺寸 <!doctype html><html><head><meta charset="utf-8">&l

設定Textview的Drawableleft、Drawableright 等圖片與文字間距、位置大小的方法

給自己記錄點筆記順便也給用的著的朋友給點參考設定Textview的Drawableleft 等圖片的間距的問題 以Textview舉例 想得到如下圖的Textview效果public class MyText extends TextView {    public MyT

JS獲取設定游標的位置

<html> <head> <script language="javascript"> function getCursortPosition (ctrl) {//獲取游標位置函式 var CaretPos = 0; // IE Su

Swing 中設定模態窗體啟動位置

{    private JFrame frame =null;    privateboolean modal =false;    private String title =null;    public MyModalFrame() ...{        this(null, false);    

iOS 高德地圖設定中心點,獲取中心點的詳細位置經緯度

先在下面附上逆地理成功之後的圖片 下面附上具體的幾步程式碼實現: 1.通過傳入的經緯度進行逆地理編碼,進行逆地理編碼初始化,然後發起逆地理編碼搜尋。(self.search 這個是定義的 AMapSearchAPI 的物件) - (void)setGegeo:(CLL

Android 在程式碼中設定imageview的大小位置(滿足單方向的放大縮小任意位置的移動)

       許久以前,在我還是初中的時候,有過一個當網路小說家的夢想,誰知到如今,卻成一個程式設計師。享受生活,享受現在,做一個寫部落格的程式設計師,也算是了卻當初的半個夢想。