在XCode 6中创建新项目不允许禁用Storyboard.您只能选择Swift或Objective-C并使用或不使用Core Data.
我尝试删除故事板,从项目中删除主故事板,并从didFinishLaunching手动设置窗口
在AppDelegate中我有这个:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow
var testNavigationController: UINavigationController
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
testNavigationController = UINavigationController()
var testViewController: UIViewController = UIViewController()
self.testNavigationController.pushViewController(testViewController, animated: false)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window.rootViewController = testNavigationController
self.window.backgroundColor = UIColor.whiteColor()
self.window.makeKeyAndVisible()
return true
}
}
Run Code Online (Sandbox Code Playgroud)
但是,XCode给了我一个错误:
类'AppDelegate'没有初始值设定项
任何人都成功了吗?
我知道很多人已经就此问了很多问题,但即使有了答案,我也无法让它发挥作用.
当我在故事板上处理约束时,它很容易,但在代码中我很难.例如,我尝试使视图保持在右侧,并根据屏幕方向具有屏幕高度.这是我的代码:
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 748)];
myView.backgroundColor = [UIColor redColor];
[self.view addSubview:myView];
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-[myView(>=748)]-|"
options:0 metrics:nil
views:NSDictionaryOfVariableBindings(myView)]];
Run Code Online (Sandbox Code Playgroud)
它不满足某些约束.我没有看到什么是错的.另外,为什么我不能像使用像self.myView本地变量这样的属性myView?
我有一个UITableViewController,如果没有任何显示,它不会显示任何部分.我添加了一个标签,向用户表明此代码无法显示:
label = UILabel(frame: CGRectMake(20, 20, 250, 100))
label.text = "Nothing to show"
self.tableView.addSubview(label)
Run Code Online (Sandbox Code Playgroud)
但现在,我希望它在水平和垂直方向上居中.通常,我会在屏幕截图中选择突出显示的两个选项(加上高度和宽度的选项):

我尝试了以下代码来添加约束但应用程序崩溃时出现错误:
label = UILabel(frame: CGRectMake(20, 20, 250, 100))
label.text = "Nothing to show"
let xConstraint = NSLayoutConstraint(item: label, attribute: .CenterX, relatedBy: .Equal, toItem: self.tableView, attribute: .CenterX, multiplier: 1, constant: 0)
let yConstraint = NSLayoutConstraint(item: label, attribute: .CenterY, relatedBy: .Equal, toItem: self.tableView, attribute: .CenterY, multiplier: 1, constant: 0)
label.addConstraint(xConstraint)
label.addConstraint(yConstraint)
Run Code Online (Sandbox Code Playgroud)
错误:
When added to a view, the constraint's items must be descendants of that view (or …Run Code Online (Sandbox Code Playgroud) 我已经和Swift和iOS合作了好几个月了.我熟悉许多方法,但我不够好,我可以不用看就写出来.我很欣赏Stack Overflow过去提供的快速答案,让我回到正轨,我已经生锈了(例如,AsyncTask Android示例).
iOS UITableView对我来说属于这一类.我已经完成了几次,但我忘记了细节.我在StackOverflow上找不到另一个问题,只是要求一个基本的例子,我正在寻找比许多在线教程更短的东西(虽然这个非常好).
我将在下面提供一个答案供我将来参考和你的.
似乎有几个不同的选项/术语,iOS社区中的人在布局方面使用(例如,UIEdgeInsets是一种类型,但有时我会听到/读取"设置插图"或布局边距与布局指南).
我总能找到一个有效的选项.但我不确定我是否正在使用合适的工具.
有人可以帮助在布局的这些不同方面之间提供一些清晰度,以及何时以最佳方式使用每个方面?
我以编程方式创建的表格视图单元格未根据其自定义视图的内在内容高度进行大小调整,即使我正在使用UITableViewAutomaticDimension并设置顶部和底部约束.
问题可能在于我的UITableViewCell子类实现.请参阅下面的代码"无法以编程方式工作">"代码">"MyCustomCell.swift".
我正在尝试为自定义蒙古语键盘制作一个建议栏.蒙古文是垂直写的.在Android中它看起来像这样:
我已经知道我应该使用一个UITableView可变单元格高度,从iOS 8开始可以使用.这需要使用自动布局并告诉表格视图使用单元格高度的自动尺寸.
我一直在学习的一些事情在我最近的SO问题和答案中有所体现:
所以我已经达到了支持内在内容大小的垂直标签.这些标签放在我的自定义表格视图单元格中.并且如下一节所述,它们在我在故事板中执行时起作用,但在我以编程方式创建所有内容时则不起作用.
为了隔离问题,我创建了两个基本项目:一个用于我使用故事板的地方,另一个用于以编程方式执行所有操作.故事板项目有效.从下图中可以看出,每个表格视图单元格都会调整大小以匹配自定义垂直标签的高度.
在IB
我设置约束来固定顶部和底部以及使标签居中.
码
ViewController.swift
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let myStrings: [String] = ["a", "bbbbbbb", "cccc", "dddddddddd", "ee"]
let cellReuseIdentifier = "cell"
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension
}
// number of rows in …Run Code Online (Sandbox Code Playgroud) 我基本上试图重现警报的标题和消息部分的行为.
标题和消息标签似乎位于滚动视图中.如果标签文本增加,则警报高度也随着标签的固有内容大小而增加.但在某个高度,警报高度停止增加,标题和消息文本变为可滚动.
我读过的内容:
用品
堆栈溢出
答案可能在那里,但我无法抽象它.
我尝试过的:
我只关注具有两个标签的滚动视图,我试图做一个最小的例子,其中父视图将根据scrollview的内在高度调整大小.我玩过很多限制.这是一个组合(许多)组合不起作用:
我使用过自动布局和正常约束,甚至内在的内容大小.此外,我知道如何使用自动布局获得基本滚动视图.但是,我从未做过任何关于优先级和内容拥抱以及抗压缩性的事情.从我所做的阅读中,我对它们的含义有一种肤浅的理解,但我不知道如何在这种情况下应用它们.我的猜测是我需要对内容拥抱和优先级做些什么.
我正在使用故事板和自动布局创建iOS应用程序,以便在iPhone4和iPhone5上都能正常运行.下面是我使用故事板创建的视图的屏幕截图.

在上图中,我想将滚动视图保持在superview的前沿和右表视图的中间.我不希望滚动视图在iPhone5中增加其宽度.我尝试了不同的约束组合,但我无法实现它.
有些人可能会建议我为滚动视图设置的所有约束是什么,以便它位于中心.
所以我有这些文本字段,我意识到它们都有相同的属性,所以我创建了一个名为" UserInputs "的新类并从中扩展UITextField,一切正常,除了一件事,UITextFieldDelegate函数不起作用,我的意思是当我专注于它们时它没有工作,我想在代码中添加它,因为当你专注于我的输入字段,他们改变边框,我如何正确地从子类UITextField
我唯一的问题是功能:
textFieldDidBeginEditing
textFieldDidEndEditing
Run Code Online (Sandbox Code Playgroud)
所以不起作用.
这是我的班级,一切都在发生:
import Foundation
import UIKit
class RegistrationViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var firstName: UserInputs!
@IBOutlet weak var test: UserInputs!
override func viewDidLoad() {
super.viewDidLoad()
self.firstName.delegate = self
self.test.delegate = self
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的子类:
class UserInputs: UITextField{
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
createBorder()
}
func createBorder(){
let border = CALayer()
let width = CGFloat(2.0)
border.borderColor = UIColor(red: 55/255, green: 78/255, blue: 95/255, …Run Code Online (Sandbox Code Playgroud) 我有一个UIImageView以编程方式添加的内容和一个已添加到Storyboard中的按钮.现在我需要在它们之间添加"垂直间距",但我不知道该怎么做.如果我UIImageView在故事板中添加会很容易:

我该如何解决这个问题?
ios ×10
swift ×6
autolayout ×5
constraints ×2
uiscrollview ×2
uitableview ×2
layout ×1
objective-c ×1
storyboard ×1
subclass ×1
uitextfield ×1
view ×1
xcode ×1
xcode6 ×1