我在navigation.titleView中添加了一个搜索栏
self.navigationItem.titleView = searchBar
Run Code Online (Sandbox Code Playgroud)
还有一个标题=""的BackBarButtonItem
self.navigationItem.backBarButtonItem?.title = ""
Run Code Online (Sandbox Code Playgroud)
但后来有很差距Back Button和SearchBar,就像这样:

我想是因为那里的空间,在这里出现的差距title的backBarButtonItem(因为我title是空""但空间仍然存在)
所以我想问一下如何省略这个差距?我想让我searchBar离我更近backBarIcon
非常感谢!
编辑1:我尝试更改searchBar的框架,但它不起作用
这是我的代码
//Change searchBar's frame
let titleViewFrame = (searchController.searchBar.frame)
searchController.searchBar.frame = CGRect(x: titleViewFrame.minX - 20.0, y: titleViewFrame.minY, width: titleViewFrame.width + 20.0, height: titleViewFrame.height)
Run Code Online (Sandbox Code Playgroud) 我正在考虑Java和C如何管理范围内的变量.
在java中,每个迭代器,我创建一个新对象,然后打印它.结果说每个迭代器我有一个新的Object.
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
while (true) {
Ideone object = new Ideone();
System.out.println(object);
}
}
}
Run Code Online (Sandbox Code Playgroud)
C中的范围变量.我和Java一样.每个迭代器我创建一个变量并打印其地址.但结果让我感到困惑,因为它返回相同的地址,因为我认为每个迭代器都会在随机地址创建一个新变量
#include <stdio.h>
int main() {
while (1) {
int variable;
printf("%p\n", &variable);
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我Java和C的内幕是什么?为什么C不为它的变量创建随机地址?
编辑1:
我有另一个关于C中动态内存管理的问题,如下所示:
#include <stdio.h>
int main() {
while (1) {
int *variable = malloc(sizeof(int));
printf("%p\n", variable);
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它们在每个迭代器之后打印不同的地址.并且每个地址都比以前的常量大小多.
但如果释放这样的内存,现在它打印相同的地址
#include <stdio.h>
int main() {
while (1) {
int *variable = malloc(sizeof(int));
printf("%p\n", variable); …Run Code Online (Sandbox Code Playgroud)