我試着口我的應用程序iOS7
,但我的自定義TableViewController
是顯示搜索很多關於它下TabBar
:(的iOS 7定製的TableView下的TabBar
IM的最後一行(小區),但我不覺得。任何解決方案誰能幫我
在打擊截圖顯示錯誤(僅顯示由於IM draging到最多顯示的TabBar下隱藏的產品最後一個產品的一部分):
謝謝。
我試着口我的應用程序iOS7
,但我的自定義TableViewController
是顯示搜索很多關於它下TabBar
:(的iOS 7定製的TableView下的TabBar
IM的最後一行(小區),但我不覺得。任何解決方案誰能幫我
在打擊截圖顯示錯誤(僅顯示由於IM draging到最多顯示的TabBar下隱藏的產品最後一個產品的一部分):
謝謝。
在iOS 7中,viewController使用全高。有一個屬性介紹爲
self.automaticallyAdjustsScrollViewInsets = NO;
將其設置爲no。然後檢查,或者設置UIEdgeInset,如果沒有正確設置它。
UIEdgeInsetsMake(top, left, bottom, right)
編輯:嘗試也是這個
self.edgesForExtendedLayout = UIRectEdgeNone;
使用的問題被掩蓋了:
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 112, 0);
}
但它並沒有解決,因爲在每個iPhone和eac上h應用程序tableview我有一個不同的底部空間。
所以這是一個糟糕的解決方案。
我不知道解決這個問題的方法。
UINavigationController
和UITabBarController
都有一個透明度標誌,可以通過編程或故事板設置。
UINavigationController
也有兩個標誌,用於控制內容是否在頂部或底部欄下延伸。您可以再次以編程方式或在故事板中設置它們。這將適用於所有子視圖。
每個UIViewController
都可以在代碼中設置自己的偏好。該物業被稱爲edgesForExtendedLayout
,您可以設置所有組合。
使用這些屬性將允許AutoLayout和Springs'n'Struts按照您希望的方式調整視圖,而不考慮設備。
UIViewController
有很多新的屬性,你會想看看。
我現在解決了我的問題,改變我的BaseTableViewController從UIViewController繼承到UITableViewController。
但是,使用一個UIViewController內的TableView不解決:(
感謝。
我有同樣的問題,用故事板解決了這個問題。 在選項卡欄控制器上,轉到屬性檢查器Simulated Metrics,並將Bottom Bar設置爲不透明選項卡欄。而已! 查看圖像波紋管的描述。
Saudações! (Greetings!)
UIViewController有兩個新屬性可以幫助您:topLayoutGuide
和bottomLayoutGuide
。它們返回您需要避免的父視圖控制器控件的高度。在這種情況下,bottomLayoutGuide
將返回標籤欄的偏移量。
您的自定義視圖控制器可能是壓倒一切的方法,而不是調用super
的實施方案,其中這會爲你做。我猜你正在安裝AutoLayout約束或手動設置視圖的框架來填充視圖。您只需將[bottomLayoutGuide length]
中的值包含到佈局計算中即可。如果您支持輪換,則應該在willAnimateRotationToInterfaceOrientation:duration:
中更新該值。
也許不是一個正確的答案,也因爲這個原因我發佈這個答案,所以你可以告訴我,如果這個答案可能是一個可行的解決方案。
就我而言,我喜歡的半透明效果,所以我在表中添加一個頁腳,我已經修改了scrollIndicators。
- (void)viewDidLoad
{
// Do any additional setup after loading the view.
[super viewDidLoad];
UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.agendaItemsTable.frame.size.width, self.tabBarController.tabBar.frame.size.height)];
self.agendaItemsTable.tableFooterView = footer;
self.agendaItemsTable.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, self.tabBarController.tabBar.frame.size.height, 0);
}
您怎麼看?
我找到了答案,在另一篇文章你的問題,通過dariaa回答,在這裏:
Tab Bar covers TableView cells in iOS7
我爲我工作的偉大。
請不要信任我,因爲我不是解決它的原始人。
在您的自定義TableViewController,下添加這兩行[超級viewDidLoad中]:
- (void)viewDidLoad
{
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeAll;
self.tableView.contentInset = UIEdgeInsetsMake(0., 0., CGRectGetHeight(self.tabBarController.tabBar.frame), 0);
}
謝謝,這解決了我的標籤欄問題 – Kunani
我有同樣的問題,和上票選答案沒有解決這個問題。請參閱my answer以獲得類似問題Tab Bar covers TableView cells in iOS7。
我通過手動將表視圖控制器的viewWillAppear:
方法中的表視圖的框架設置爲屏幕高度 - (狀態欄高度+導航欄高度+標籤欄高度)來解決問題。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// Adjust height of tableview (does not resize correctly in iOS 7)
CGRect tableViewFrame = self.tableView.frame;
tableViewFrame.size.height = [self heightForTableView];
self.tableView.frame = tableViewFrame;
}
- (CGFloat)heightForTableView
{
return CGRectGetHeight([[UIScreen mainScreen] bounds]) -
(CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) +
CGRectGetHeight(self.navigationController.navigationBar.frame) +
CGRectGetHeight(self.tabBarController.tabBar.frame));
}
如果有人發現這個問題的更好的解決方案,請分享!
你在這裏使用viewWillAppear錯誤的初學者這是一個常見的錯誤,應該在viewWillLoad。viewWillAppear每次出現視圖時觸發!你不希望視圖設置代碼在每次你的視圖出現的時候都會觸發,只有動態的代碼纔會在viewWillAppear中出現,比如動態更新的數據,如果視圖邏輯與數據更新相關,你可以調用視圖邏輯,如視圖刷新,但視圖設置不應該在viewWillAppear。 – smileBot
cocoanut:根據我的經驗,這樣的幀我並不總是在viewDidLoad中設置視圖,但它們設置在viewWillAppear中,因此,如果viewDidLoad中的幾何計算需要基於視圖中的視圖,則會導致計算結果不正確。 – Jeff
@Jeff同意。我把這段代碼放在'viewWillAppear:'中,因爲不能保證幀將被設置在'viewDidLoad'中。 –
對於那些喜歡xarly誰想要的半透明效果,併爲自動佈局溶液(不設置幀),這裏https://stackoverflow.com/a/26419986/1158074
2線看到我的答案在viewDidLoad
,這就是它!
self.edgesForExtendedLayout = UIRectEdgeAll;
self.tableview.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, CGRectGetHeight(self.tabBarController.tabBar.frame), 0.0f);
'UIRectEdgeAll'默認設置爲 – pxpgraphics
這個問題的根本原因是automaticallyAdjustsScrollViewInsets
是只在您的VC的視圖層次第一滾動視圖有效。它沒有被蘋果公司記錄,但它是唯一的方式,VC會檢測到需要修改的滾動視圖,除非你使用的是UITableViewController。
因此,爲了解決您的問題,而無需手動調整插圖,這樣做:
哇,這使得可以保持標籤欄的半透明行爲,並仍然使滾動視圖項在其上滾動。謝謝! – Peterdk
嘗試以下操作:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeBottom;
我的朋友們,我無法告訴你我有多掙扎。沒有一個故事板的重新配置從未幫助過我。這個問題是完全一樣的原貼,我已經成功使用,以解決它:
爲SWIFT 3
self.edgesForExtendedLayout = []
的Objective-C的
self.edgesForExtendedLayout = NO;
令人難以置信,但這是我在tabbar下查看問題的答案。 –
我把它(已經測試,如果你看到評論代碼)。但是沒有解決它:( –
不適用於我的結局 – Cesare