- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
更新 2:我仍然希望在这个问题上得到一些帮助,所以既然我已经更好地缩小了范围,我将稍微完善我的问题。
我的 UIViewController
层次结构如下所示:
如果用户触摸过滤器图标并选择电梯类型,则会出现过滤器 View 。左边的图像是没有选择过滤器的样子,右边的图像是选择过滤器的样子。导航区域(以绿色勾勒出轮廓)是我要设置的样式。
这是我想不通的事情。如果我添加这两件事:
UINavigationBar.appearance().translucent = false
UINavigationBar.appearance().barTintColor = UIColor(hexString: "232B35")
然后在导航区域和筛选 View 之间出现一个空白区域:
如果我将半透明属性设置为 true,则不会出现空白,但 barTintColor 将不起作用。
请注意,我没有在我的UIViewController
中放置一个UINavigationBar
。我只有一个要用代码添加的 UINavigationItem
。
在这一点上,我的问题是 - 当我的代码中有 UINavigationBar.appearance().translucent = false
时,为什么突然出现大空白(我能做什么摆脱它,但仍然改变我的导航区域的颜色)?
我真的被困住了,希望得到一些帮助。谢谢!
以下是我的原始问题,其中包含可能有用或无用的信息:我正在尝试设计我的应用程序的样式,但很难做到。在一个 UIViewController
上,我有一个 ThemeManager struct
,它具有将主题应用到应用程序的功能,并在该方法代码中使导航栏与背景颜色融为一体应用程序:
static func applyTheme(theme: Theme) {
// set the background color
sharedApplication.delegate?.window??.backgroundColor = UIColor(hexString: "232B35")
UINavigationBar.appearance().translucent = false // these are the offenders
UINavigationBar.appearance().barTintColor = UIColor(hexString: "232B35")
// first, set backgroundimage to nothing
UINavigationBar.appearance().setBackgroundImage(
UIImage(),
forBarPosition: .Any,
barMetrics: .Default)
// and also set shadowimage to nothing
UINavigationBar.appearance().shadowImage = UIImage()
UIStatusBarStyle.LightContent
UILabel.appearance().textColor = UIColor(hexString: "768DAA")
}
}
我的初始 ViewController
看起来像我想要的那样 - 背景和导航组件颜色相同:
但是在不同的 View Controller 上,它有这么大的空间,我不想要:
我发现是 UINavigationBar.appearance().translucent
和 UINavigationBar.appearance().barTintColor
属性导致了这种情况发生。就好像它在实际导航区域下面添加了一个 UINavigationBar
。如果我注释掉该代码,它当然没有颜色,但我不想要的大空间也会消失:
这两个 VC 之间的最大区别是:在第一个看起来像我想要的 VC 中,我有意通过 Storyboard放置了一个 UINavigationBar
但在第二个 VC 中我没有。我只在其中放置了一个 UINavigationItem
。另请注意,第二个 VC 包含一个 UITableView
但它不是 UITableViewController
。
如何在导航区域中获得我想要的纯色而不在其下方添加不需要的空间?
编辑#1这是对有问题的 UIViewController
的另一种看法:
注意层次结构是带有@IBOutlet 连接的UIView
,在它下面是一个UIStackView
,它包含过滤 View (一个UIView
)使用高度布局约束和 UITableView
展开和折叠。所以出现的大空白甚至不在我的层次结构中。
如果有帮助,这里是 Lift Log 的 UIViewController
中的 viewDidLoad
方法:
类 LiftLogViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate {
//MARK: IB outlets
@IBOutlet var tableView: UITableView!
@IBOutlet weak var navItem: UINavigationItem!
@IBOutlet weak var filterViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var clearFilterButton: UIImageView!
@IBOutlet weak var selectedFilter: UILabel!
@IBOutlet weak var clearButtonHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var clearButtonView: UIImageView!
let coreDataStack = CoreDataStack()
var liftEvents = [LiftEvent]()
var isFilterViewOpen = false
override func viewDidLoad() {
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: #selector(self.dismissLog(_:)))
let filterImage = UIImage(named: "filter_icon")
let filterButton = UIBarButtonItem(image: filterImage, style: .Plain, target: self, action: #selector(self.actionFilter))
self.navItem.rightBarButtonItems = [doneButton, filterButton]
let buttonTap = UITapGestureRecognizer(target: self, action: #selector(self.clearFilter))
clearFilterButton.addGestureRecognizer(buttonTap)
filterViewHeightConstraint.constant = 0.0
clearButtonHeightConstraint.constant = 0.0
super.viewDidLoad()
}
最佳答案
您是否通过 Storyboard将第一个 VC translucent
属性中的 UINavigationBar
设置为 false 以使其与您的 UINavigationBar.appearance()
保持一致?
那么你的第二个 VC Top Bar
应该是从第一个 VC 推断出来的。
关于ios - UINavigationBar.appearance().translucent 正在创建一个大的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39198721/
我有一个加号/减号按钮,希望用户不能选择超过 20 个但不知道如何让它工作。我尝试使用 min="1"max="5 属性,但它们不起作用。这是我的代码和一个 fiddle 链接。https://jsf
我正在尝试复制顶部底部图,如示例 here但它没有正确渲染(紫色系列有 +ve 和 -ve 值,绿色为负值)留下杂乱的人工制品。我也在努力创建一个玩具示例来复制这个问题,所以我希望尽管我缺乏数据,但有
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 社区去年审查了是
这个问题在这里已经有了答案: Adding two positive integers gives negative answer.Why? (4 个答案) 关闭 5 年前。 我遇到了一个奇怪的问题
有谁知道如何将字符串值类型 -4,5 或 5,4 转换为 double -4.5 或 5.4? 最佳答案 只需使用 Double.parseDouble(Locale, String); 糟糕,我很困
我正在尝试根据 TextBlob 分类插入一个仅包含“正”或“负”字符串的新数据框列:对于我的 df 的第一行,结果是 ( pos , 0.75, 0.2499999999999997)我想要' 正
我对 VBA 非常陌生,无法理解如何在一个循环中完成 2 个任务。我非常感谢您的帮助。 我已经能够根据第 3 列中的数据更改第 2 列中的数值,但我不明白如何将负值的字体更改为红色。 表格的大小每月都
欢迎, 我正在使用 jquery 通过 POST 发送表单。 这就是我获得值(value)的方式。 var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // random decimal value with it's integral part within the range of Int32 and always p
我有这个字符串: var a='abc123#xyz123'; 我想构建 2 个正则表达式替换函数: 1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#') 所以结果应该是这样的
我正在使用 DialogFragment。当用户从 Gmail 平板电脑应用程序的屏幕与下面示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试中不起作用,这是我的 Dia
从组装艺术一书中,我复制了这句话: In the two’s complement system, the H.O. bit of a number is a sign bit. If the H.O
是否有更好更优雅的方法来实现下面的简单代码(diffYear、A 和 B 是数字): diffYear = yearA - yearB; if (diffYear == 0) { A = B
我正在设计一种语言,并尝试确定 true 应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。 每种选择的优点和缺点是什么? 最佳答案 没关系,只要
在我的 dialogfragment 类的 OnCreateDialog 中,我正在这样做: AlertDialog.Builder builder = new AlertDialog.Builder
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda usin
我偶然发现了一个奇怪的 NSDecimalNumber 行为:对于某些值,调用 integerValue、longValue、longLongValue 等,返回意想不到的值(value)。示例: l
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda using
我有这个正则表达式来测试用户输入是否有效: value.length === 0 || value === '-' || (!isNaN(parseFloat(value)) && /^-?\d+\.
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000): gm = fitgmdist(d
我是一名优秀的程序员,十分优秀!