相关疑难解决方法(0)

iOS 7:UITableView显示在状态栏下

我的应用程序的第一个屏幕是UITableViewController没有导航栏,这意味着内容在状态栏下流动,因此存在大量文本冲突.我已经调整了两个属性Under top bars,Adjust scroll view insets哪些实际上阻止了它滚动,但代价是保持表视图的顶部.我试图将UITableView帧设置为偏移20像素,但它似乎没有生效,因为我目前需要该应用程序与iOS 6兼容我无法跳转到iOS 7 Storyboards强制自动布局使用顶部高度指南.有没有人找到适用于这两个版本的解决方案?

事情我已经尝试:设置edgesForExtendedLayout,故事情节中更改设置Under top barsAdjust scroll view,迫使帧到一个新的领域.

一张图片胜过千言万语: 状态栏下的流量

ios uistatusbar ios7

219
推荐指数
8
解决办法
15万
查看次数

IOS7:UINavigationController中的UIScrollView偏移量

我目前正在ios 7上迁移我的应用程序,并且我已经在新的导航控制器/栏管理上被困了几个小时.

之前,当我们有导航控制器时,我们有一个这样的片段:

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];
Run Code Online (Sandbox Code Playgroud)

在界面构建器中,我们可以选择为视图设置现有导航栏,并且所有内容都与实际视图的内容相匹配.

好的,现在,我不知道如何使用界面构建器正确设计.我仍然有我的片段来初始化我的navcontroller.但是在我的MainViewController的界面构建器中,如果我将状态栏设置为半透明或不透明的导航栏,我的顶部偏移量为44px(见下文).


Interface Builder_________________________和结果


现在,如果我将状态栏设置为无,则顶部没有偏移,但由于导航栏导致模拟器上的视图较小,因此界面构建器中视图的底部被切断.

Interface Builder_________________________和结果

我想我真的在这里遗漏了一些东西,但我在iOS7 Transitions Guide中找不到任何主题或苹果信息.

谢谢你的帮助


编辑

正如我们在图片中看到的那样,视图的第一个子节点是包含两个标签的UIScrollView,当没有scrollview时,问题不会出现.如果它是UITableView也会出现.如果标签位于UIScrollView之外,则该标签没有偏移量.

uinavigationbar uinavigationcontroller ios7

126
推荐指数
3
解决办法
5万
查看次数

iOS11中奇怪的uitableview行为.单元格向上滚动导航推送动画

我最近将一些代码迁移到了新的iOS 11 beta 5 SDK.

我现在从UITableView得到一个非常令人困惑的行为.tableview本身并不那么花哨.我有自定义单元格但在大多数情况下它只是为了它们的高度.

当我用tableview推动我的视图控制器时,我得到一个额外的动画,其中单元格"向上滚动"(或者可能整个桌面框架被更改)并沿着推/弹导航动画向下移动.请看gif:

波浪的tableview

我手动创建tableviewloadView方法和设置自动布局约束等于前置,顶部的tableview的上海华盈的底部.superview是视图控制器的根视图.

视图控制器推送代码非常标准: self.navigationController?.pushViewController(notifVC, animated: true)

相同的代码在iOS 10上提供正常行为.

能指点我指出错误的方向吗?

编辑:我已经制作了一个非常简单的tableview控制器,我可以在那里重现相同的行为.码:

class VerySimpleTableViewController : UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
    }


    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        cell.textLabel?.text = String(indexPath.row) …
Run Code Online (Sandbox Code Playgroud)

animation uitableview uinavigationcontroller ios

116
推荐指数
4
解决办法
4万
查看次数

UICollectionView增加了上边距

我想放一个水平显示拇指的UICollectionView控件(只有一行拇指).由于某种原因,UICollectionView将拇指向下推44像素,因此"0"高度实际上是"44".我假设它可能会添加这个空间来考虑导航栏高度(我只是假设).由于我的UICollectionView仅在屏幕的一部分上,我不想要这个边距.有没有办法删除它?

uicollectionview ios7

75
推荐指数
5
解决办法
4万
查看次数

由UISearchController在表头视图中呈现的UISearchBar在活动时动画太远

我正在使用UISearchController在tableview的标题视图中显示一个搜索栏:

...
self.searchController.hidesNavigationBarDuringPresentation = NO;            
self.presentingTVC.tableView.tableHeaderView = self.searchController.searchBar;
[self.searchController.searchBar sizeToFit];
self.presentingTVC.tableView.tableHeaderView = self.searchController.searchBar;
Run Code Online (Sandbox Code Playgroud)

(需要设置tableHeaderView属性两次,否则标题视图与第一行重叠,参见SO上的几个答案)

这是它看起来的样子,在不活动时完美地处于适当位置 非活动搜索栏位于正确位置

搜索栏应该在活动时保持原位 - 我不希望它向上移动以隐藏导航栏.但它意外地动画下来,在它和导航栏之间留下一个空白:

屏幕截图显示搜索栏动画太远了

这是一个 奇怪的搜索栏动画视频

如果我只是使用与UISearchController分开的搜索栏,则它在激活时不会显示相同的行为.

在我的呈现视图控制器中,我有self.definesPresentationContext = YES;self.navigationController.navigationBar.translucent = YES;,并且在IB中没有任何"扩展边缘"框是活动的(所有这些似乎都可能使搜索演示文件无法读取).

有谁知道如何阻止搜索栏动画下来?

uitableview uisearchbar ios ios8 uisearchcontroller

56
推荐指数
7
解决办法
4万
查看次数

如何在iOS 7中的导航栏上获得模糊和半透明效果?

问题

我的应用程序似乎布局正确,但我无法实现iOS 7着名的模糊半透明效果.我看起来不透明.

在此输入图像描述

期望的效果

我正试图获得更明显的模糊效果,例如Apple的预告片应用:

在此输入图像描述

半透明

在我的UINavigationController的子类中,我使导航栏半透明:

- (id)initWithRootViewController:(UIViewController *)rootViewController
{
    if (self = [super initWithRootViewController:rootViewController]) {
        self.navigationBar.translucent = YES;
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

色调

在我的UIApplicationDelegate的子类中,我设置了导航栏的色调颜色.我发现色调的颜色没有区别.也就是说,使用0.1的α不会导致条形变得更透明.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    [[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
}
Run Code Online (Sandbox Code Playgroud)

边缘

在我的内容视图控制器中,我将边缘设置为,UIRectEdgeNone以便顶部不会被导航栏切断.如果我使用默认设置UIRectEdgeAll,导航栏将永久覆盖我的内容的顶部.即使我生活在这种异常中,UIRectEdgeAll仍然没有启用半透明效果.

- (void) viewDidLoad
{
    [super viewDidLoad];
    self.edgesForExtendedLayout = UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)

编辑:尝试边缘

广告在@rmaddy的评论中指出,问题可能与edgeForExtendedLayout有关.我找到了一个全面的教程edgesForExtendedLayout并试图实现它:

- (void) viewDidLoad
{
    [super viewDidLoad];

    self.edgesForExtendedLayout = UIRectEdgeAll;
    self.automaticallyAdjustsScrollViewInsets = YES;
    self.extendedLayoutIncludesOpaqueBars = NO;
}
Run Code Online (Sandbox Code Playgroud)

那没起效.首先,没有半透明效应.其次,我的内容被删除了.在下面带有上述代码的示例页面上,头像最初被导航栏覆盖,很难滚动到.您可以下拉以查看头像的顶部,但是当您放开时,页面会自动反弹并且头像会再次被遮挡.

在此输入图像描述

cocoa-touch uinavigationbar ios ios7

11
推荐指数
1
解决办法
1万
查看次数

UIRefreschControl的Glitchy动画,带有导航栏的大标题

我有一个嵌入导航控制器的控制器,带有大标题和UIRefreshControl.当我在tableView上进行快速刷新时,活动指示器的动画非常糟糕.

在此输入图像描述

我不知道我的代码中是否有不良行为?

tableView.refreshControl = UIRefreshControl() tableView.refreshControl?.addTarget(self, action: #selector(downloadData), for: .valueChanged)

uinavigationbar ios pull-to-refresh swift ios11

10
推荐指数
1
解决办法
1828
查看次数

UIBarButtonItem 着色颜色与设备上的颜色不同

我至少有一个UIBarButtonItem's在每一个UIViewController在我的项目,一切都在一个UINavigationController和UINavigationBar是蓝色的,UIBarButtonItem's应该是白色的。

在模拟器中它们是白色的……但在设备中它们是浅灰色的,如下图所示:

模拟器 模拟器

设备 设备

它们运行完全相同的代码和完全相同的 ios 版本ios 8.1

我目前正在将情节提要中的色调颜色设置为白色,但我也尝试过:

// In appdelegate
UINavigationBar.appearance().barTintColor = UIColor(hex: 0x4a9bcb, alpha: 1.0)
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName:UIFont(name: "FuturaLT-Bold", size: 16)!, NSForegroundColorAttributeName:UIColor(white: 1.0, alpha: 1.0)]
UIBarButtonItem.appearance().tintColor = UIColor.whiteColor()

// In map viewcontroller viewDidLoad 
self.edgesForExtendedLayout = UIRectEdge.None
self.navigationController?.navigationBar.translucent = false
Run Code Online (Sandbox Code Playgroud)

这给出了相同的结果。

请帮助我了解发生了什么。

iphone uibarbuttonitem uicolor ios swift

1
推荐指数
1
解决办法
449
查看次数

UIScrollview 停留在不正确的 contentOffset 处(-20 px,而不是 0px)

我有一个 UIScrollview 在 y 轴上扩展并调用此委托方法:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {

    float yOff = scrollView.contentOffset.y;
    NSLog(@"y off is %f", yOff);
}
Run Code Online (Sandbox Code Playgroud)

当scrollView移动到顶部(即yOff == 0)时,它实际上在大多数手机上停留在-20px,在iPhoneX上停留在-44px。如何关闭这种行为?这样做有哪些风险?

objective-c uiscrollview ios

1
推荐指数
1
解决办法
1723
查看次数