怎么往Xcode控件库里添加控件

怎么往Xcode控件库里添加控件,第1张

我来告诉你标准答案!官方的UIKit框架提供了UILabel、UIButton等基础控件

如果你需要自定义的控件

一个是继承UIKit的某个控件,进行自定义,修改或者拼接控件

另外一个方式是如果你足够了解底层的话,自己写控件

由于官方的框架是不开源的,控件库也只是以头文件的形式存在,你无法向其添加控件

因此你添加的控件属于第三方的控件无需非要塞进官方的控件库里

苹果在Xcode 6中加入了两个新的Interface Builder(下文用IB简称)属性声明:IBInspectable和IBDesignable。IBInspectable在IB的Attribute Inspector(属性检查器)中查看类的属性,而IBDesignable能实时更新视图,很厉害吧!

IBInspectable

以下是我发现的适用于IBInspectable的类型:

下面这些数据都对IBInspectable有效:

Int

CGFloat

Double

String

Bool

CGPoint

CGSize

CGRect

UIColor

UIImage

举个小栗子

class OverCustomizableView : UIView {

@IBInspectable var integer: Int = 0

@IBInspectable var float: CGFloat = 0

@IBInspectable var double: Double = 0

@IBInspectable var point: CGPoint = CGPointZero

@IBInspectable var size: CGSize = CGSizeZero

@IBInspectable var customFrame: CGRect = CGRectZero

@IBInspectable var color: UIColor = UIColor.clearColor()

@IBInspectable var string: String = "We ? Swift"

@IBInspectable var bool: Bool = false

}

在属性检查器的上面是这样:

这一切添加了一些用户定义的运行时属性,这些属性将会在view加载时设置它的初始值。

运行时属性的创建:

IBDesignable

来看个好玩的地方。IBDesignable告诉IB它可以加载并渲染视图。这个视图类必须在一个框架里面才能正常工作。不过这种方式也不会太麻烦,我们下面会看到方法。 我认为IB是隐式地将UIView的代码转换成NSView的代码,这样就能动态地加载框架并渲染组件。

创建新工程

打开Xcode6,创建一个新的“Single Page Application” (单页面应用)并选择Swift作为编程语言。

添加新的Target

在导航选中工程文件点击“+”按钮添加新的target

选择Framework &Application Library和choose the Cocoa Touch Framework,如图

命名为MyCustomView。Xcode会自动链接MyCustomView.framework到你的工程。

创建自定义视图类

创建一个新的swift文件,并添加到MyCustomView框架里。

右键单击框架的目录。

选择Cocoa Touch文件

给它命名为CustomView,作为UIView的子视图

CustomView.swift文件里包含:

import UIKit

class CustomView: UIView {

init(frame: CGRect) {

super.init(frame: frame)

// Initialization code

}

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

override func drawRect(rect: CGRect)

{

// Drawing code

}

*/

}

移除生成的方法。

import UIKit

class CustomView: UIView {

}

告诉Xcode用@IBDesignable 关键字来渲染你的视图。

添加三个属性:borderColor: UIColor, borderWidth: CGFloat以及cornerRadius: CGFloat。

设置默认值,并让它们是可检验的:

@IBDesignable class CustomView : UIView {

@IBInspectable var borderColor: UIColor = UIColor.clearColor()

@IBInspectable var borderWidth: CGFloat = 0

@IBInspectable var cornerRadius: CGFloat = 0

}

为视图层属性添加逻辑

为每个属性添加[property observers](观察者属性),并根据layer更新。

class CustomView : UIView {

@IBInspectable var borderColor: UIColor = UIColor.clearColor() {

didSet {

layer.borderColor = borderColor.CGColor

}

}

@IBInspectable var borderWidth: CGFloat = 0 {

didSet {

layer.borderWidth = borderWidth

}

}

@IBInspectable var cornerRadius: CGFloat = 0 {

didSet {

layer.cornerRadius = cornerRadius

}

}

}

按编译框架

测试自定义视图

打开Main.storyboard,从组件库里添加一个视图。

在Identity Inspector里把视图类改成CustomView。

调整视图,如果需要可添加自动布局约束。

Tip:按住选中视图并拖动鼠标到另一个视图可以添加自动布局约束。

上手玩了一下`cornerRadius`,我发现当添加一些比较大的值时会创建一个有意思的模式。

转载

xcode添加ios device步骤:

1、登录苹果官网developer.apple.com--ios Dev Center

2、点击Devices-->Add Devices-->填写Device Name ,Device ID(打开xcode--window--Organizer--点击左边栏里后边有绿点的那个设备(就是当前插的设备,如果设备不能开放的话,可能就是黄点)---Summary--拷贝identifier的那一长串--submit。

3、打开xcode项目--右键Get Info--Cofiguration(Active(Debug))---下面列表中选择Any Iphone os Device,选择自己的设备


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11619980.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存