在我的应用程序中
我有带根视图控制器的导航控制器.
显示/隐藏工作正常的导航栏.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
BOOL navbarhide=[self.navigationController.navigationBar isHidden];
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
效果很好,但是,
隐藏导航栏后,查看框架更改.
如果未隐藏导航栏,则会更改视图框.
![当导航栏没有被隐藏时..看到按下按钮,视图的原点位于栏下方,我不想这样,我希望它粘在导航栏的原点[在页面顶部]](https://i.stack.imgur.com/3Gb4y.png)

提前致谢...
编辑设置集self.view.frame没有任何效果.
我的didFinishLaunchingWithOptions函数中有以下代码:
[[[UITableViewCell appearance] textLabel]setFont:[UIFont fontWithName:@"someFont" size:12]];
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,这不会改变我的表格单元格中的文本.
如果在表中委托函数cellForRowAtIndexPath我添加
cell.textLabel.font = [UIFont fontWithName:@"someFont" size:12];
Run Code Online (Sandbox Code Playgroud)
它确实将字体更改为我想要的字体.
有任何想法吗?
在Objective-C中,如果我有以下属性:
@property (strong, nonatomic) NSArray * myArray;
Run Code Online (Sandbox Code Playgroud)
返回多个对象的myArray方法如下所示:
- (NSInteger) numberOfObjectsInMyArray
{
return [self.myArray count];
}
Run Code Online (Sandbox Code Playgroud)
这将返回数组中对象的数量,或者返回0 myArray == nil;
在Swift中我能想到的最好的等价物是:
var myArray: Array<String>?
func numberOfObjectsInMyArray() -> Int
{
return myArray ? myArray!.count : 0
}
Run Code Online (Sandbox Code Playgroud)
因此,检查可选数组包含一个值,如果是,则解包该数组并返回该值,否则返回0.
这是正确的方法吗?还是有更简单的东西?
我正在努力弄清楚如何UIDocument在iCloud文件夹中重命名子类的实例.我尝试使用新网址保存文档...
func renameDocument(to name: String) {
let targetURL = document.fileURL.deletingLastPathComponent().appendingPathComponent(name)
.appendingPathExtension("<extension>")
document.save(to: targetURL, for: .forCreating) { success in
guard success else {
// This always fails
return
}
// Success
}
}
Run Code Online (Sandbox Code Playgroud)
......但这失败了......
Error Domain=NSCocoaErrorDomain Code=513 "“<new-file-name>” couldn’t be moved because you don’t have permission to access “<folder>”."UserInfo={NSSourceFilePathErrorKey=/private/var/mobile/Containers/Data/Application/1A9ACC2B-81EF-4EC9-940E-1C129BDB1914/tmp/(A Document Being Saved By My App)/<new-file-name>, NSUserStringVariant=( Move ), NSDestinationFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/<folder>/<new-file-name>, NSFilePath=/private/var/mobile/Containers/Data/Application/1A9ACC2B-81EF-4EC9-940E-1C129BDB1914/tmp/(A Document Being Saved By My App)/<new-file-name>, NSUnderlyingError=0x1c4e54280 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
......而且只是一个简单的举动......
func renameDocument(to name: …Run Code Online (Sandbox Code Playgroud) 我正在使用 xcode 5 为 iPhone 开发应用程序,我使用轻量级迁移来更新核心数据架构。
我在模型版本 1 中创建了一个 User 实体,User有一个名为nameA.
在模型版本2,我重命名User的nameA到nameB,我设置nameB的重命名id来nameA。这一步是成功的,之前的值nameA可以在 中找到nameB。
然后,我创建的模型版本3添加一个名为另一个实体House,我在3版本中发现,User“SnameB仍然有其重命名ID设置nameA
我认为在模型版本 3 中,User'snameB不应该具有重命名 ID,因为模型版本 3 基于版本 2,而在版本 3 中我没有更改任何User实体
那么我应该删除User's的重命名 IDnameB吗?还是把它留在那里?
有谁知道怎么做?
我正在尝试创建CIFilter如下的子类:
class ColorMonochromeFilter: CIFilter {
required init(red: CGFloat!, green: CGFloat!, blue: CGFloat!) {
super.init(name: "ColorMonochrome")
setDefaults()
let colour = UIColor(red: red, green: green, blue: blue, alpha: 1.0)
setValue(colour, forKey: kCIInputColorKey)
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
似乎指定的初始化程序是init(coder aDecoder: NSCoder!)由于CIFilter符合NSCoding协议,而不是init(name: String!)在的扩展名中声明的CIFilter。
我可以通过添加以下内容来消除第一个错误:
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)
(尽管这似乎有些多余!)
有没有办法解决第二个问题?
我想在这里实现的是Swift的等效功能:
@implementation ASHColorMonochromeFilter
+ (ASHColorMonochromeFilter *) filterWithRed: (CGFloat) red green:(CGFloat)green blue:(CGFloat)blue
{
ASHColorMonochromeFilter * filter = (ASHColorMonochromeFilter …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个UIAlertAction,第一个按钮为黑色文本,第二个按钮为蓝色.如果我改变色调然后全部变黑,但是没有它我不能将第一个按钮改为黑色.以下是我的代码:
let alert = UIAlertController(title: "", message: "", preferredStyle: .actionSheet)
// alert.view.tintColor = UIColor.black
alert.addAction(UIAlertAction(title: "First", style: .cancel, handler: nil))
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
self.present(alert, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud) 我一直在研究一个新的基于文档的应用程序,并且非常高兴新的UIDocumentBrowserController ...试图为文档浏览器推出我自己的解决方案UI很棘手!
我在浏览器创建后打开文档时遇到了一些麻烦.
现在发生的是,当我选择在文档浏览器中创建新文档时,会按预期创建和打开文档,但会记录错误消息.但是,在关闭文档后,即使显示文档,也无法立即或在后续启动时重新打开文件.但是,一个奇怪的线索是,如果我在创建文档后停止运行应用程序,但没有向其添加新信息(触发保存周期),并再次运行项目,我可以正确打开文件.这让我觉得文件被保存的方式就是问题所在.(注意:在此阶段,我正在努力使本地,非/ icloud实现工作,然后我继续进行icloud实现.)
以下是文档保存到磁盘时代码中任何一点的错误消息(或至少大部分时间!):2017-06-20 13:21:58.254938-0500布道设计2 iOS [22454:5000138] [ default] [ERROR]无法获取项目文件的属性值:/// Users/stevenhovater/Library/Developer/CoreSimulator/Devices/9A4364F2-B3A1-4AD9-B680-FB4BC876C707/data/Containers/Data/Application/DD534ED8-C4A3 -40FE-9777-AED961976878 /文档/无标题-9.sermon.错误:错误域= NSFileProviderInternalErrorDomain代码= 1"不允许读者访问该URL." UserInfo = {NSLocalizedDescription =不允许读者访问该URL.}
我怀疑问题在于我的文档类型plists,我试图通过在wwdc 2017 session 229中模仿视频中的设置来设置.
我的文档被一个NSData对象所包围,使用我所采用的UIDocument非常标准的子类实现.(我省略了生成缩略图的代码)
override func contents(forType typeName: String) throws -> Any {
print("Saving Document Changes")
if sermon != nil {
let newData = NSKeyedArchiver.archivedData(withRootObject: sermon!)
return newData
} else {
let newData = NSKeyedArchiver.archivedData(withRootObject: Sermon())
return newData
}
}
override func fileAttributesToWrite(to url: URL, for saveOperation: UIDocumentSaveOperation) throws -> [AnyHashable : Any] {
let thumbnail:UIImage = self.createThumbnail() …Run Code Online (Sandbox Code Playgroud) info.plist
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
UIViewController
override var prefersStatusBarHidden: Bool{
return true
}
Run Code Online (Sandbox Code Playgroud)
当我使用6p时,可以,但是
iphoneX不能调用,并且StatusBar不隐藏
我目前正在使用共享扩展功能。
在这里,当我搜索很多时,似乎总是使用 SLComposeServiceViewController 将带有一些文本内容的图像共享到特定应用程序。
但我希望自定义 UIViewController 类加载了从照片应用程序中选择的图像,在打开时它就像邮件编辑器一样 mail extension on share sheet
所以我得到了这个示例,并按照以下 git hub 链接(第二个)中的说明操作:
是的,它似乎4 years ago是迁移并转换为Swift 4.1版本。在我修改了这些更改并对其进行调试之后。它不像在 GitHub gif 上那样工作。是的,在初始时间,当我在共享表上触摸扩展应用程序时,我可以显示和关闭控制器。但是在我驳回并再次尝试呈现之后,这次它没有在 GitHub gif 上做出反应。
Martin 只显示和隐藏self.view of UINavigationController Y position value. 一旦我按下Cancel or save条形按钮,然后我尝试在共享表上通过扩展打开它,它不起作用并且那里没有反应。
这里是来源 NSExtensionPrincipalClass - EntryViewController
import UIKit
@objc(EntryViewController)
class EntryViewController : UINavigationController {
init() {
super.init(rootViewController: ShareViewController())
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: …Run Code Online (Sandbox Code Playgroud) ios ×7
swift ×5
cocoa-touch ×2
uidocument ×2
appearance ×1
arrays ×1
cifilter ×1
core-data ×1
icloud ×1
ios11 ×1
iphone ×1
iphone-x ×1
objective-c ×1
optional ×1
uikit ×1
uistatusbar ×1
uitableview ×1
xcode5 ×1