小编336*_*784的帖子

iOS约束方程值

从自动布局指南

我试图找出约束方程中左右视图的值是什么.

目前这就是我的看法.

坐标系中的原点(0,0)位于左上角.

因此,靠近顶部和左侧的views.attribute更小.

在上面张贴的图片中.RedView.Leading的值高于BlueView.trailing.满足等式因为8被添加到BlueView.trailing.


这同样适用于下图中带圆圈的约束.superView.top小于greyView.top,因为superView.top在origin.x上.

自动布局指南


我的问题是相对于原点的值?

constraints ios autolayout nslayoutconstraint swift

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

Firebase Firestore 未更新电子邮件验证状态

我的安全规则设置如下(在 Firestore 控制台中)。

    service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {

      allow read: if request.auth.uid != null && request.auth.token.email_verified;
      allow write: if false; 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Firebase 自动登录新用户。因此,最近的用户将拥有一个未经验证的电子邮件地址。

当用户验证他们的电子邮件时,我会在我的应用程序中得到这些结果。

Auth.auth().currentUser?.isEmailVerified // This is true
Run Code Online (Sandbox Code Playgroud)

但是当我向 firestore 发出请求时,我收到一条错误消息,指出用户没有足够的权限访问该数据。

当我注销用户然后重新登录时,一切正常。

我最初的想法是,也许有一个没有刷新的令牌?但这似乎非常令人困惑,因为在尝试向 firestore 发出请求之前,我已经刷新了当前用户。

Auth.auth().currentUser?.reload()
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些东西。

为什么用户在注册后被强制登录,但他们的电子邮件验证状态没有相应更新?

我们是否必须请求重新认证?

如果是这样,强制登录的意义何在?


这变得非常令人沮丧,因为我不知道我应该如何管理我的用户。

登录未经验证的用户是我们应该做的事情吗?这会不会导致安全问题,例如用户创建虚假帐户和向您的应用程序发送垃圾邮件。


更新

我读到了这个不迅速的回应,这再次加强了我的怀疑。

我明天要测试这个解决方案,它的 swift 版本是:

Auth.auth().currentUser?.getIDTokenForcingRefresh(forceRefresh: , completion: )
Run Code Online (Sandbox Code Playgroud)

该方法的文档:

检索 Firebase 身份验证令牌,如果它已过期,可能会刷新它。评论

如果身份验证令牌已过期或forceRefresh为 YES ,则会刷新(通过发出网络请求)。

我猜在我的情况下我必须强制刷新,因为令牌不会过期。

firebase firebase-security swift firebase-authentication google-cloud-firestore

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

UIViewController中的extend edge属性是什么?

我在论坛上看过有关此属性的内容,主要是人们将此属性设置为false或在故事板中取消选中它.我自己做了这个,因为当我在视图中嵌入了UINavigation Controller时,顶栏会向下推我的UITextView,所以文本在底部开始编辑.

取消选中UIViewController中StoryBoard中顶部栏下的扩展边缘可以解决我的问题,但我不明白发生了什么.

有人可以解释这个属性的目的是什么,我想了解更多.

uiviewcontroller ios

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

有没有办法配置firebase超时时间?

我注意到 firebase 的奇怪行为。

在没有互联网的情况下发出登录请求时,firebase 需要很长时间才能超时并在完成处理程序中返回错误。

一旦发生第一次超时,firebase 将在 1 秒或 2 秒后开始超时。

我想降低请求的超时时间。


我知道我可以在提出任何 firebase 请求之前检查互联网连接。但这并不能解决所有情况,因为当实际发送请求时,互联网连接可能会中断。

在这些奇怪的情况下,用户将不得不等待很长时间,并且可能会认为应用程序崩溃而退出应用程序。

我知道我可以观察互联网连接并显示某种图标,让用户知道互联网连接正在中断。但这对于简单的事情来说似乎是很多工作。发生这种情况时,Apple 的网络 api 会立即返回,firebase 无法处理这样的事情似乎很奇怪。


总而言之,我想找到一种方法来降低 firebase 请求的超时时间。

或者

理想情况下,让 firebase 在互联网连接中断后立即返回错误。

ios swift firebase-authentication

7
推荐指数
0
解决办法
653
查看次数

设备旋转期间 CALayer 子层不优雅

我直接在视图层上画了一个圆圈,设备旋转看起来很完美。

绘图发生在func draw(_ rect: CGRect)方法中。

然后,我在子图层上绘制了圆圈,并将其添加到 init 方法中的视图中。

我在方法中更新了子层的框架func draw(_ rect: CGRect)

在我看来,有时子层会在设备旋转完成之前进行更新。因此出现了下面的第一张图片。

使这看起来更好一点的快速修复是剪辑子视图层。这样,圆圈就不会渗入主视图(橙色视图)。

尽管这并没有解决主要问题。我不知道为什么添加子层会导致此问题。

我还在其超级视图的绘制方法中绘制子图层的内容。橙色视图不是超级视图,超级视图是中间的矩形

旋转期间

旋转期间

在此输入图像描述

注意:我没有添加示例代码,因为我见过的所有示例都有相同的问题。其他人通过硬编码视图的大小来修复此问题,因此旋转不会调整视图的大小,并且旋转也不会导致这种情况。他们还倾向于将视图锁定在纵向模式下。

不过,如果需要示例代码,我可以创建一个简单的示例。

core-graphics calayer ios swift

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