小编Gav*_*ope的帖子

iOS 8启动图像文件 - 导航栏和状态栏

我正在使用Interface Builder为iOS 8制作启动图像文件.我想要的启动图像非常简单(我认为与设置应用程序相同) - 顶部的导航栏带有一个空的Grouped TableView.没有标题等

注意,我通常不使用Interface Builder - 因此IB对我来说是全新的.

我试图通过向视图添加导航栏和表视图来实现此目的 - 然后设置约束.约束(和颜色)工作正常,但......

问题:启动图像在状态栏上显示全屏.像这样:

在此输入图像描述

如何同时获取状态栏和导航栏?

就像我说的那样,当你选择在Xcode中添加Launch Screen时,我正在使用默认的'UIView'.所以没有导航控制器; 那是问题吗?

另外,UIView上有一些选项似乎应该给我我想要的东西:

在此输入图像描述

我试过玩状态栏选项,但它不是有效.

  • 我需要推断还是默认?
  • 我看到启动图像(状态栏+导航栏)和实际应用程序运行之间有一个小的偏移量,我刚刚错误定位了吗?
  • Top Bar选项的目的是什么?
  • 对于我想要的启动图像,我甚至需要将TableView添加为子视图,还是可以在主UIView上使用背景颜色?我试过了,但后来我的状态栏/导航栏出现了不匹配的颜色......

对于Interface Builder noob,如何创建复制"设置"应用程序的启动屏幕文件?

cocoa-touch interface-builder ios ios8

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

了解addChildViewController的使用

我正在使用一些我需要重构的代码.视图控制器充当两个其他视图控制器的容器,并将在它们之间进行交换,如下面的代码所示.

这可能不是最好的设计.可能不需要以这种方式交换视图控制器.我明白那个.但是,当我使用这段代码时,我想进一步了解addChildViewController调用会发生什么.我无法在Apple的文档或相关问题中找到答案(这可能表明设计需要改变).

具体来说 - 容器视图控制器如何处理要求添加已添加的子视图控制器的情况?它是否认识到它已经添加了该视图控制器对象?

例如,如果下面的代码在方法内 - 并且该方法被调用两次...

[self addChildViewController:viewControllerB];
[self.view addSubview:viewControllerB.view];
[viewControllerB didMoveToParentViewController:self];

[viewControllerA willMoveToParentViewController:nil];
[viewControllerA.view removeFromSuperview];
[viewControllerA removeFromParentViewController];
Run Code Online (Sandbox Code Playgroud)

谢谢,加文

objective-c viewcontroller ios

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

iOS 7中显示键盘时"调整大小"UITextView的问题

我的目标只是iOS7.

我想UITextView在显示键盘时"调整大小" ,以便可以看到所有文本,而不是隐藏在键盘后面.

我考虑了几种不同的方法......

1)更改UITextView键盘显示的帧.

下面的问题详细说明了我使用这种方法时遇到的同样问题 - 尽管框架设置正确,但最后一行/光标将超出范围UITextView,因此不在视线范围内:

更改框架时,UITextView光标位于框架下方

您可以从以下屏幕截图中看到此效果.该UITextView有一个绿色的背景.它被添加到UIView红色背景中.箭头显示光标所在的位置......

在此输入图像描述

2)改变contentInset财产UITextView

我相信这种推荐/首选方法.注意,我已经阅读了Apple文档,用于根据出现/消失的键盘调整视图大小:

https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW7

使用我的代码,当我更改底部组件时,我没有任何效果UIEdgeInsets.

与上面的示例相同,UITextView红色为绿色UIView,文本在键盘下方消失:

在此输入图像描述

这是代码:

- (void)keyboardWillShow:(NSNotification*)notification
{
    CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    UIEdgeInsets insets = _textView.contentInset;
    insets.bottom += keyboardSize.height;
    _textView.contentInset = insets;
    _textView.scrollIndicatorInsets = insets;
}
Run Code Online (Sandbox Code Playgroud)

注意:该scrollIndicatorInsets部分工作正常.用屏幕截图很难描绘,但滚动指示器在正确的位置开始和停止并且看起来是正确的大小.

我已经阅读了一些人们遇到类似问题的问题.

3)改变textContainerInsetUITextView

这个问题的答案建议使用textContainerInset而不是contentInset在iOS 7上:

UITextView contentInset在iOS 7上的UITextView中不起作用?

我也试过这个,但仍然无法调整大小 …

cocoa-touch uitextview ios ios7

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

UITabBarController - Child(Tab)ViewControllers的不正确和不一致的界限

我有UITabBarController两个选项卡.每个标签都是一个UITableViewController.

UITabBarController出现时,这两个选项卡视图中的每个不正确的边界.第一个选项卡正确位于导航栏下方,但延伸到底部的选项卡栏下方.第二个选项卡是另一种方式,从导航栏下方开始,但在底部的选项卡栏之前正确停止.

在此输入图像描述

我正在创建和呈现TabBarController,如下所示:

ActiveListTabBarViewController* listTabBarController = [[ActiveListTabBarViewController alloc] initWithListController:_listController];
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:listTabBarController];
[self presentViewController:nc animated:YES completion:^(){}];
Run Code Online (Sandbox Code Playgroud)

然后在initTabBarController中,创建并添加子(tab)视图,如下所示:

_todoListViewController = [[BasicTableViewController alloc] initWithList:[_controller itemsToDo]];
_todoListViewController.delegate = self;
_todoListViewController.title = @"To Do";
_completedListViewController = [[BasicTableViewController alloc] initWithList:[_controller itemsDone]];
_completedListViewController.delegate = self;
_completedListViewController.title = @"Completed";

[self setViewControllers:@[_todoListViewController, _completedListViewController]];
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

谢谢,加文

更新:按照建议添加以下方法BasicTableViewController:

- (UIRectEdge)edgesForExtendedLayout
{
    return UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)

第一个选项卡的行为已得到改进并且位置正确,但第二个选项卡保持不变.现状如下:

在此输入图像描述

有什么建议?干杯.

uitabbarcontroller ios ios7

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

什么是在iOS 8中使用UITextView导致此不需要的内容(在iOS 7中没有)?

UITextView在iOS 7中,我一直在使用自动布局以编程方式创建.这样的事情:

_textView = [UITextView new];
_textView.translatesAutoresizingMaskIntoConstraints = NO;
_textView.font = [UIFont systemFontOfSize:18.0];
_textView.delegate = self;
[self.view addSubview:_textView];
Run Code Online (Sandbox Code Playgroud)

除了我创建的其他约束之外,我还有一个用于文本视图的底部:

_textViewBottomConstraint = 
       [NSLayoutConstraint constraintWithItem:_textView
                                                     attribute:NSLayoutAttributeBottom
                                                     relatedBy:NSLayoutRelationEqual
                                                        toItem:self.bottomLayoutGuide
                                                     attribute:NSLayoutAttributeTop
                                                    multiplier:1.0
                                                      constant:0.0];

[self.view addConstraint:_textViewBottomConstraint];
Run Code Online (Sandbox Code Playgroud)

这样我可以在键盘显示时更改约束:

- (void)keyboardDidShow:(NSNotification*)sender
{
    CGRect keyboardFrame = 
                        [sender.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGRect convertedFrame = 
                        [self.view convertRect:keyboardFrame fromView:self.view.window];
    _textViewBottomConstraint.constant = -convertedFrame.size.height;
    [_textView layoutIfNeeded];
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好......

问题

我刚刚切换到Xcode 6和iOS 8(我知道很晚) - UITextView现在的文本顶部有一个插页.例如(文本视图背景为黄色):

在此输入图像描述

是什么导致了插图?是否NSTextContainertextContainerInset?相关?

  • 正在与NSTextContainertextContainerInset正确使用方式UITextView从iOS的7及以后?
  • 是否必须在iOS …

nslayoutmanager uitextview nstextcontainer ios7 ios8

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

如何在iOS 8启动屏幕文件中设置导航栏颜色?

我正在为启动屏幕文件使用故事板.这是一个非常基本的设置:

在此输入图像描述

我想为导航栏设置不透明的颜色......

我可以在AppDelegate中执行以下操作:

[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)

但这不适用于启动屏幕文件.

如何barTintColor在Interface Builder中设置导航栏颜色/ ?

cocoa-touch interface-builder ios ios8

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

如何编写一个返回Vec <Path>的函数?

我正在阅读文档并尝试编写一些基本文件I/O代码作为工具来帮助我学习Rust.

以下内容无法编译:

use std::fs;
use std::io;
use std::path::Path;

pub fn read_filenames_from_dir<P>(path: P) -> Result<Vec<Path>, io::Error>
where
    P: AsRef<Path>,
{
    let paths = try!(fs::read_dir(path));
    Ok(paths.unwrap())
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

error[E0277]: the trait bound `[u8]: std::marker::Sized` is not satisfied in `std::path::Path`
  --> src/main.rs:5:1
   |
5  | / pub fn read_filenames_from_dir<P>(path: P) -> Result<Vec<Path>, io::Error>
6  | | where
7  | |     P: AsRef<Path>,
8  | | {
9  | |     let paths = try!(fs::read_dir(path));
10 | |     Ok(paths.unwrap())
11 | | }
   | |_^ …
Run Code Online (Sandbox Code Playgroud)

rust

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

如何在 Xcode 调试会话之外查看 iOS 应用程序的崩溃日志?

我有一个应用程序,用户需要在使用它之前登录。

为了增强用户体验,用户只需要在第一次登录,每次应用程序都不会显示登录屏幕,但会显示应用程序[我使用用户默认值来存储他的ID]现在我已经实现了这一点但我遇到了一个错误,当我成功登录后打开它时,应用程序崩溃了..

问题是: 为了模拟我打开应用程序而不需要登录的场景,我必须停止应用程序[这意味着不会有调试会话],然后重新打开应用程序..

我要问的是: 有没有办法知道我没有在调试会话中运行应用程序来查看导致错误的原因?

提前致谢

crash-reports ios

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

如何在拥有的Vec中复制或借用对拥有的String的引用?

我试图先设置一个String默认值,但String如果给出了一个命令行参数,则更新它...

这是我的起点(不编译):

use std::env;

fn main() {
    let mut config_file = "C:\\temp\\rust\\config.txt".to_string();
    let args: Vec<String> = env::args().collect();
    if args.len() > 1 {
        config_file = args[1];
    }
    println!("Config file path: {}", config_file);
}
Run Code Online (Sandbox Code Playgroud)

所以,(我认为)env::args()给了我一个拥有的矢量或拥有的字符串......我怎么做:

  • 复制矢量中的字符串
  • 获取向量中的字符串引用

注意:

$ rustc --version
rustc 1.8.0 (db2939409 2016-04-11)
Run Code Online (Sandbox Code Playgroud)

rust

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

使用Observable/Reactive Extensions检测鼠标移动的开始和停止?

让我先说:

  1. 我对Rx完全不熟悉
  2. 我没有使用C#/ Linq练习
  3. 我正在进行实验/学习,因此这个问题没有应用

我读过一些介绍内容,包括本介绍无框架马修Podwysocki.

所以我从他的一个例子开始,写了一些像这样的鼠标拖动/绘图代码:

var leftMouseDown = Observable.FromEventPattern<MouseEventArgs>(mainCanvas, "MouseLeftButtonDown");
var leftMouseUp = Observable.FromEventPattern<MouseButtonEventArgs>(mainCanvas, "MouseLeftButtonUp");
var mouseMove = Observable.FromEventPattern<MouseEventArgs>(mainCanvas, "MouseMove");

var mouseMoves = from mm in mouseMove
                 let location = mm.EventArgs.GetPosition(mainCanvas)
                 select new { location.X, location.Y };

var mouseDiffs = mouseMoves.Skip(1).Zip(mouseMoves, (l, r) => new { X1 = l.X, Y1 = l.Y, X2 = r.X, Y2 = r.Y });

var mouseDrag = from _ in leftMouseDown
                from md in mouseDiffs.TakeUntil(leftMouseUp)
                select …
Run Code Online (Sandbox Code Playgroud)

c# linq system.reactive

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

Git编辑器中缺少换行符(在Windows上使用记事本)

我一直在尝试将记事本设置为Git的默认全局编辑器.

调用记事本现在工作正常.这是我的配置文件的样子:

[user]
    name = Gavin Hope   
    email = gavin.hope@myemailaddress.com

[core]
    autocrlf = true
    excludesfile = C:\\Users\\Gavin.Hope\\Documents\\gitignore_global.txt
    editor = 'C:\\Windows\\notepad.exe'

[diff]
    tool = p4merge

[merge]
    tool = p4merge

[mergetool "p4merge"]
    path = C:/Program Files/Perforce/p4merge.exe
    keepBackup = false
    trustExitCode = false
Run Code Online (Sandbox Code Playgroud)

但是,当记事本启动时,例如git commit,没有换行符.我看到了这个:

# Please enter the commit message for your changes. Lines starting# with '#' will be ignored, and an empty message aborts the commit.## Date:      Wed Oct 28 11:40:40 2015 …
Run Code Online (Sandbox Code Playgroud)

git git-config

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