单播 IPv6 地址 2001:db8:acad::aaaa:1234/64 中的子网 ID 是什么?
xhr's questions
在 SnapKit 中,.offset 和 .inset 执行表面上相似的操作。在哪些情况下使用 .offset() 是正确的,在哪些情况下使用 .inset()?
默认情况下,UINavigationBar 中的后退按钮是左箭头和前一个 UIViewController 的标题。您需要离开箭头,并将此按钮上的文本替换为“返回”一词。
这种方式它不起作用 - 按钮不会以任何方式改变:
navigationItem.backBarButtonItem = UIBarButtonItem(title: "Назад", style: .plain, target: nil, action: nil)
这样一来,原来是改了文字,但是后退的箭头消失了:
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Назад", style: .plain, target: nil, action: nil)
如何将本机箭头留在后退按钮上并用我自己的文本替换?
我知道在使用 prefersLargeTitles 时,您可以分别为“大”和“小”标题设置字体、颜色、字体大小。
但是,在导航控制器上启用“LargeTitles”是否有可能使“扩展”导航栏上的“大标题”以大写字符显示?
那些。达到这个效果:
现在我为此目的使用自定义导航控制器:
class MyNavigationController: UINavigationController {
public var titleSaved: String?
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
guard let topItem = navigationBar.topItem else {
return
}
if navigationBar.frame.size.height > 60 {
topItem.title = topItem.title?.uppercased()
} else {
if let titleSaved = titleSaved {
topItem.title = titleSaved
} else {
topItem.title = topItem.title?.applyingTransform(StringTransform(rawValue: "Title"), reverse: false)
}
}
}
}
从视图控制器设置标题:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.prefersLargeTitles = true
let title = "Sign In"
navigationItem.title = title
if let nc = navigationController as? MyNavigationController {
nc.titleSaved = title
}
}
}
此解决方案有效,但是当从“大”标头更改为“小”标头并再次变回时,它会有点抽搐 - 它看起来不太漂亮......
如何在 iOS 应用程序中捕捉 Yandex 地图中的缩放事件?
请参阅代码中的注释:
import Foundation
let someString = "1234567"
func reverse(_ str: String) -> String {
var str = str
var indexLeft = 0
var indexRight = str.count - 1
while indexLeft < indexRight {
let a = str[str.index(str.startIndex, offsetBy: indexLeft)]
let b = str[str.index(str.startIndex, offsetBy: indexRight)]
// ???: какой самый простой, лаконичный и правильный способ поменять символы a и b,
// находящиеся на позициях indexLeft и indexRight, местами в строке
//
// FIXME: я сделал вот так, но, уверен, есть способ элегантнее
//
str = String(str.prefix(indexLeft) + String(b) + str.suffix(from: str.index(str.startIndex, offsetBy: indexLeft + 1)))
str = String(str.prefix(indexRight) + String(a) + str.suffix(from: str.index(str.startIndex, offsetBy: indexRight + 1)))
//
//
//
indexLeft += 1
indexRight -= 1
}
return str
}
print(reverse(someString)) // 7654321
更新:不,String 的内置 .reversed() 方法对我不起作用(为什么不起作用?-因为这是 Leetcode 的挑战)。问题是不要逆转。问题完全涉及字符串操作的优化——不知何故,它们现在看起来太麻烦并且花费太长时间(例如,有时包含很长字符串的测试用例以超出时间限制结束)。
let a = Character("A")
let aAscii: Int = // ???:
let bAccii = aAscii + 1
如何在 Swift 中获取 Character 类型的 ASCII 值?
向站点添加了 SSL 证书。现在有必要将通过 http: 对站点的任何请求自动转换为 https:
告诉我您需要如何更改此 .htaccess 以获得所需的行为:
AddDefaultCharset UTF-8
ErrorDocument 404 /index.php?page=404
RewriteEngine On
RewriteCond %{HTTP_HOST} ^somedomain\.ru
RewriteRule ^(.*)$ http://www.somedomain.ru/$1 [R=301,L]
RewriteBase /
# RewriteRule ^index.php$ / [R=301,L]
RewriteRule ^test/(x.+/)?$ index.php?page=test [L]
RewriteRule ^test/create/((de|es)/)?$ index.php?page=create&lang=$2 [L]
RewriteRule ^test/create/(([0-9A-Fa-f]+)/)?$ index.php?page=create&token=$2 [L]
RewriteRule ^test/([^/]+)/$ index.php?page=test&act=$1 [L]
RewriteRule ^test/replay/([0-9A-Za-z]+)/$ index.php?page=test&replay=$1 [L]
只需更改行:
RewriteRule ^(.*)$ http://www.somedomain.ru/$1 [R=301,L]
在:
RewriteRule ^(.*)$ https://www.somedomain.ru/$1 [R=301,L]
并非在所有情况下都提供所需的行为。
UPD:将 .htaccess 更新为@Alex 的回答中的选项 9:
AddDefaultCharset UTF-8
ErrorDocument 404 /index.php?page=404
RewriteEngine On
# https://masterhost.ru/support/doc/apache/#http2https
RewriteCond %{HTTP:PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# https://masterhost.ru/support/doc/apache/#redirect
RewriteCond %{HTTP_HOST} ^somedomain\.ru
RewriteRule ^(.*)$ https://www.somedomain.ru/$1 [R=301,L]
# старый вариант переадресации на www.
#RewriteCond %{HTTP_HOST} ^somedomain\.ru
#RewriteRule ^(.*)$ http://www.somedomain.ru/$1 [R=301,L]
RewriteBase /
# RewriteRule ^index.php$ / [R=301,L]
RewriteRule ^test/(x.+/)?$ index.php?page=test [L]
RewriteRule ^test/create/((de|es)/)?$ index.php?page=create&lang=$2 [L]
RewriteRule ^test/create/(([0-9A-Fa-f]+)/)?$ index.php?page=create&token=$2 [L]
RewriteRule ^test/([^/]+)/$ index.php?page=test&act=$1 [L]
RewriteRule ^test/replay/([0-9A-Za-z]+)/$ index.php?page=test&replay=$1 [L]
...有效。
告诉我一个正则表达式,它会在文本中的年份数字(两位或四位数字)上查找带有点(“g”)的字母 g,并用空格分隔它们。
期望的行为:
1956г. -> 1956 г.
56г. -> 56 г.
12345г. -> 12345г.
45г -> 45г
无论用户设备上安装的设置时区如何,您如何才能获得准确的莫斯科时间?
private func isItOpenNow() -> Bool? {
let date = Date()
let components = Calendar.current.dateComponents([.weekday, .hour], from: date)
// TODO: здесь нужно вытаскивать именно московское время
if let weekday = components.weekday, let hour = components.hour {
if weekday != 2 { // Пн - выходной
if hour >= 10 && hour < 18 {
return true
}
}
return false
}
return nil
}
如何通过openURL在本机应用程序中打开谷歌地图中的两点之间的路线?
如何通过 openURL 打开 Yandex 地图中的两点之间的路线?
如何检查某个应用程序(Yandex.maps、google.maps 或本地地图)是否安装在用户的设备上,以便编译可以在其中构建路线的应用程序列表?
用自定义图像替换 UINavigationBar for iOS10+ 中的后退按钮的最佳方法是什么?(不需要标题)