小编Tam*_*ola的帖子

iOS 11大标题导航栏没有崩溃

Cocoa Touch WWDC视频中的新功能中的苹果公司表示,新的大标题导航栏将神奇地挂钩到底层视图控制器的顶级滚动视图,并在向上和向下滚动时自动折叠/展开.(这里的"神奇",他很可能意味着他们没有猴子修补这个功能集成到已经尴尬UINavigationController- UINavigationBar- UINavigationitem在一个可用的方式的API,因此他们不得不求助于挂钩到幕后的一些试探性地选择滚动视图)

即使我准备好这种"自动"崩溃/扩展如果我偏离基本的UINavigationController+ UITableView/ UICollectionView设置稍微不起作用,似乎即使在这个最简单的情况下它也不能按预期工作.

这就是我所拥有的:

一个UITabBarController其中包含了UINavigationController,其中包含了UIViewController,其中有一个UITableView是它的view.点击表格中的第一个单元格将推送导航堆栈上的第二个视图控制器:

故事板

没有代码,只有故事板.

我已经检查了导航栏中的"首选大标题"以激活大型标题.现在,如果我运行应用程序并在表格视图上向上/向下滚动,导航栏保持不变 - 大尺寸; 它没有崩溃:

坚持大标题

但是,我发现如果我将第二个视图控制器的导航项设置为使用小导航栏(通过将"大标题"设置为值"从不"),那么如果我打开该页面并导航回来,则交互式崩溃神奇地开始在第一页上工作:

反向导航后,交互式折叠工作

我在这里遗漏了什么,或者这个功能不能正常工作?这是我正在使用的示例项目:https://github.com/tzahola/iOS-11-Large-Title-Navigation-Bar

顺便说一下,我正在使用官方发布的iOS 11,而不是beta.

2017-09-23更新:我已经向Apple发送了一个错误报告,并在openradar.me上开了一张票:http://www.openradar.me/radar?id = 5017601935671296

objective-c uikit ios ios11

43
推荐指数
5
解决办法
2万
查看次数

如何使用iOS base SDK 6.1将项目部署到iOS 7设备

我一直在这个问题上浪费了一整天,但找不到解决方案:我一直在使用iOS 6.1 SDK开发应用程序,整个设计依赖于iOS 6.1 UI.昨天,我已将手机更新到iOS 7,更新完成后,从备份中返回的以前部署的应用程序看起来和以前一样工作(在iOS 6.1上); 一切都很好.但是,我不得不将我的Xcode更新到版本5,因此我可以在开发期间继续将连续调试版本部署到我的iOS 7设备.在更新到Xcode 5之前,我已经从Xcode的内部文件夹备份了iPhoneOS6.1.sdk软件包.然后更新到Xcode 5,然后将iPhoneOS6.1.sdk软件包放回其iOS 7 SDK旁边的文件夹中,该软件包随Xcode 5安装一起提供.我已将项目的基础SDK切换到iOS 6.1,

但是,当我将应用程序部署到我的手机时,它看起来像垃圾,因为它显示在iOS 7 UI元素中.如果我使用安装了iOS 6.1的设备,一切看起来都很好; 如果我选择在iOS 7设备上进行调试,看起来XCode并不会对我选择的基本SDK有所了解,并将应用程序与iOS 7相关联.

我如何强制Xcode,将相同的6.1链接内容部署到所有设备,无论它是否安装了iOS版本?

iphone ios ios7 xcode5

19
推荐指数
2
解决办法
2万
查看次数

Booking.com如何以编程方式关闭他们的应用程序?

我刚看到Booking.com应用程序的这个技巧,让你更改应用程序的语言:

booking.com app

我不知道有任何技术以编程方式关闭iOS应用程序(并且它也被Apple的指导禁止,但让我们"假装"我的老板要我这样做).

他们是如何做到的呢?我已经尝试了,exit(0)但它会立即退出,就像进程崩溃一样,而他们的应用程序通常会动画到主屏幕.是否可能有私人URL方案打开主屏幕?

objective-c uiapplication ios swift

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

iOS 11安全区域与UIView动画

请考虑以下内容:我创建了一个可重用的UIView子类,它具有一个背景,并在其子视图中列出了一些内容.作为负责任的开发人员,我根据其安全区域对齐了视图的子视图,以便在必要时自动插入其内容(例如在iPhone X上):

中心vs底部

优秀!当内部视图位于安全区域内时,内部视图是边对边的,当它从安全区域悬挂出来时,内部视图将其内容从底部插入.

现在让我们说最初视图应该在屏幕外,但是当用户点击我的应用程序中的某个地方时,我希望我的视图动画到屏幕的中心,它应该在第二次点击时动画显示.让我们像这样实现它:

@implementation ViewController {
    UIView* _view;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(animate:)]];
}

- (void)animate:(UITapGestureRecognizer*)sender {
    if (_view == nil) {
        _view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
        _view.backgroundColor = UIColor.redColor;

        UIView* innerView = [[UIView alloc] initWithFrame:CGRectMake(5, 5, 90, 90)];
        innerView.translatesAutoresizingMaskIntoConstraints = NO;
        innerView.backgroundColor = UIColor.blueColor;

        [_view addSubview:innerView];
        [_view addConstraints:@[[_view.safeAreaLayoutGuide.topAnchor constraintEqualToAnchor:innerView.topAnchor constant:-5],
                                [_view.safeAreaLayoutGuide.rightAnchor constraintEqualToAnchor:innerView.rightAnchor constant:5],
                                [_view.safeAreaLayoutGuide.bottomAnchor constraintEqualToAnchor:innerView.bottomAnchor constant:5],
                                [_view.safeAreaLayoutGuide.leftAnchor constraintEqualToAnchor:innerView.leftAnchor constant:-5]]];

        _view.center = CGPointMake(self.view.bounds.size.width / 2,
                                   self.view.bounds.size.height + _view.bounds.size.height / 2); …
Run Code Online (Sandbox Code Playgroud)

uikit ios autolayout ios11 iphone-x

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

IPv6 范围 ID 与 IPv4

最近,我正在使用用于 IPv6 的伯克利套接字 API,并注意到 IPv6 地址 ( sockaddr_in6) 有一个名为sin6_scope_id,该字段不是 IPv4 地址的一部分。

\n\n

经过一番搜索后,我\xe2\x80\x99了解到这scope_id意味着识别网络接口,因为多个网络接口可以具有相同的链路本地IPv6地址。这是有道理的,但是我不明白\xe2\x80\x99不明白的是IPv4如何处理这个问题,如果\xe2\x80\x99s没有等效的范围ID?

\n\n

内核中是否有一种机制可以防止为多个 IPv4 接口分配相同的链路本地地址?

\n\n

如果情况确实如此,那么为什么有必要为 IPv6 发明作用域 ID,而不是采用与 IPv4 相同的解决方案?

\n\n

另外,scope_id 仅用于区分具有相同链路本地地址的接口,还是还有其他用例?

\n

sockets ipv4 ipv6 berkeley-sockets

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

(目标 - )C++模板专业化上的重复符号

好吧,自昨天以来,我一直在努力解决这个奇怪的错误,所以我想是时候向社区提问了......

我目前正在使用Objective-C++,我在头文件中有一个纯粹的C++类声明,如下所示:

#ifndef __MATRIX_H__
#define __MATRIX_H__

#define USE_NEON_UPSAMPLING2X true
#define USE_NEON_THRESHOLD true

typedef float OCRfloat;

template<class T = OCRfloat>
class Matrix {

public:
    ...

    Matrix threshold(T thresholdValue) const;

    ...

    Matrix upsample2x() const;

    ...
};

#ifdef TARGET_OS_IPHONE

#if USE_NEON_UPSAMPLING2X
template<> Matrix<float> Matrix<float>::upsample2x() const;
#endif

#if USE_NEON_THRESHOLD
template<> Matrix<float> Matrix<float>::threshold(float thresholdValue) const;
#endif

#endif

#include "Matrix.cpp"

#endif
Run Code Online (Sandbox Code Playgroud)

它是模板类,具有基本矩阵运算,但是,我希望通过T = float上的模板特化来优化一些瓶颈.我有包含的Matrix.cpp文件,如下所示:

#include <iostream>
#include <cmath>

#if defined TARGET_OS_IPHONE
#include <Accelerate/Accelerate.h>
#endif

...

template<class T> Matrix<T> Matrix<T>::threshold(T thresholdValue) const {
   ... // …
Run Code Online (Sandbox Code Playgroud)

c++ xcode templates linker-errors objective-c++

4
推荐指数
2
解决办法
2440
查看次数