我有2个关于ScrollView的问题.一个是我的主要问题,另一个是次要的混乱.
1.什么到底是contentOffset
和contentInset
的ScrollView
?我将在下面提供更多详情.
我创造了一个ScrollView
,但似乎ScrollView
无法向任何方向滚动.这是关于抵消的问题吗?还是插图?我将在下面提供更多详情.
问题1的详细信息:
有时contentOffset
属性和contentInset
属性似乎有很多不同,但是当我尝试实现一些与这两个属性相关的函数时,我感到困惑.我在这里做一个简单的说明.你能帮我弄清楚哪个部分是偏移的,哪个部分是插入的?
问题2的详细信息:
我使用以下功能添加一个 ScrollView
func addScrollView(){
// assign a new ScrollView to "scroll" class member
scroll = UIScrollView(frame: CGRectZero)
scroll!.translatesAutoresizingMaskIntoConstraints = false
// change it to gray color to help recognising
scroll!.backgroundColor = UIColor.grayColor()
self.view.addSubview(scroll!)
//add some constraints,[you can neglect following part]
let x = NSLayoutConstraint(item: scroll!, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
self.view.addConstraint(x)
let y …
Run Code Online (Sandbox Code Playgroud) 我知道TextView
它嵌入了一个ScrollView
.如果有一个相当长的String
(其中包含否"\n"
)
在TextView
将自动进行线缠绕,根据的的宽度TextView
.
如果TextView
高度很短,那么我们可以垂直滚动它.你如何禁用自动换行?这样,如果没有遇到"\n",它就不会换行.相反,它允许用户水平滚动以查看文本.
我该如何实现呢?
我构建了一个名为"CheckItem"的新数据结构(我正在做一个Todo项目)
我让CheckItem类继承NSObject
和NSCoding
但Xcode警告第1行的编译时错误:
class CheckItem : NSObject,NSCoding {
Run Code Online (Sandbox Code Playgroud)
提示是:使用未声明的类型'NSObject'(和'NSCoding')
全班如下:
class CheckItem : NSObject,NSCoding {
var text: String
var isDone :Bool
var imageName :String
init(text: String,isDone: Bool,imageName: String){
self.text = text
self.isDone = isDone
self.imageName = imageName
}
init(text: String,isDone: Bool){
self.text = text
self.isDone = isDone
self.imageName = "No Icon"
}
}
Run Code Online (Sandbox Code Playgroud)
你能指出我的错误吗?非常感谢你!
我正在学习网络技术,老师不能给我一个满意的解释.我想举几个例子,请帮我指出我是对的.
a/b/c.txt?t=win&s=chess
是request-URIpara5
不属于请求-URI只是一个片段我是Swift的新手.我创建了一个类(例如):
class Fraction{
var a: Int
init(a:Int){
self.a = a
}
func toString() -> String{
return "\(self.a)"
}
}
Run Code Online (Sandbox Code Playgroud)
我还在其他类函数中构建了一个:
class func A_plusplus(f:Fraction){
f.a++
}
Run Code Online (Sandbox Code Playgroud)
然后在执行课上我写道:
var object = Fraction(a:10)
print("before run func = " + object.toString())
XXXclass.A_plusplus(object)
print("after ran func =" + object.toString() )
Run Code Online (Sandbox Code Playgroud)
所以控制台输出是
在运行func = 10之前; 在运行func = 11之后
问题是如何发送"对象"的副本以保持其值等于10
如果函数总是按引用传递,为什么我们仍然需要关键字: "inout"
什么区别A_plusplus(&object)//[if I make the parameter to be a inout parameter]
和A_plusplus(object)
一般来说,我不想使用
struct
.虽然这将完全解决我的问题,但我很少通过值传递.所以我不希望程序的复制过程减慢用户手机的速度:(似乎符合
NSCopying
协议是一个很好的选择.但我不知道如何实现该功能:func copyWithZone(zone: NSZone)-> AnyObject?
正确
首先我发现我很容易格式化其他类型,例如Int,例如:
let i = 12345
let s = String(format: "%-10d", 12345)
//then s = "12345 "
Run Code Online (Sandbox Code Playgroud)
右手边的几个空间正是我所需要的!
但是当我尝试将它实现为String时(如果我使用"%@",我是对的吗?)
let str = "12345"
let s = String(format: "%-10@", str)
//then s = "12345" rather than "12345 "
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做才能达到同样的效果呢?