代码 import UIKit @objc class ZJXibView: UIView { @IBOutlet var contentView: UIView!...self.addSubview(self.contentView) } } 使用方法 比如我们的xib名字为ZJUserPicView.xib 就必须建一个相同名字的类ZJUserPicView.swift...并继承ZJXibView ZJUserPicView.swift import UIKit class ZJUserPicView: ZJXibView { @IBOutlet weak...@IBOutlet weak var nameLabel: UILabel!...的Class指定为ZJUserPicView.swift 然后连接picImageView和nameLabel 这样ZJUserPicView就可以整体做一个组件来用了 完整示例 Swift示例 ObjectC
Cocoa Touch 层为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,它负责用户在 iOS 设备上的触摸交互操作以及一些其他的关键功能。 创建第一个iOS项目 ?...Storyboard 中的界面与ViewController.swift之间的联系(一个界面与一个类文件关联)。...与 Storyboard 中的 UIView 建立联系。 此时的属性就代表 Storyboard 中的 UIView 所有的 UI 控件都可以拖拽 @IBOutlet。...连线的前提 Storyboard 中的 UIViewController 与想拖拽的类进行了关联。 经典的连线错误 UIView 连线后删除了类中的 @IBOutlet 或者 @IBAction。...UIView 连线后改变类中的 @IBOutlet 或者 @IBAction 名字。
DWCenterViewController为滑出式导航的类,代码: class DWCenterViewController: UIViewController { var delegate...weak var animalImageView: UIView!...@objc optional func collapseSidePanels() //折叠侧边的容器 } 在DWCenterViewController.swift的actorsTapped点击方法调用协议方法...leftViewController: DWSidePanelViewControllervar centerPanelExpandedOffset: CGFloat = 60 //该值是中央视图控制器在屏幕外动画显示后左侧可见的宽度...func addLeftPanelViewController() {//guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句
关联 xib 文件与源文件 关联 xib 文件与 UIView 子类的源文件 新建一个空的xib文件,拖一个UIView上去 新建一个继承自UIView的源文件 选中xib文件里的View,把class...在源文件的 loadView() 方法里设置该 VC 的 View 属性为这个自定义的 View。...UIView view.addSubview(testView) } 使用与 UIViewController 子类源文件关联的 xib Demo HomeViewController.swift...对应代码为: testView.autoresizingMask = [.flexibleRightMargin, .flexibleBottomMargin] 外框的 上、下、左、右如果选中,则UIView...用 External Object 重构 VC 只能在于 xib IB 中的关键字总结 Swift @IBAction @IBOutlet @IBDesignable @IBInspectable
:blue @IBOutlet weak var blueSquare: UIView!...// x:156 y: 219 width: 8 height: 8 bgColor:red @IBOutlet weak var redSquare: UIView!...// x:33 y: 137 width: 254 height: 172 @IBOutlet weak var imgView: UIImageView!...打开DynamicsTossingVC.swift并将以下代码放在viewDidLoad()中super.viewDidLoad()下方。...现在拖动图像后,它应该恢复到原始位置。 UIPushBehavior 接下来,我们需要在停止拖动时分离视图,并为其提供动力,以便在运动中释放视图时可以继续其轨迹。
前言:上章UIKit Dynamics 置身真实世界介绍了基本用法,下面我们继续深入学习——手势跟Dynamics结合的用法 一、触摸处理 1、在ViewController.swift添加以下属性,并在...Main.storyboard结合这些属性,在Main.storyboard添加一个imageView,以及扮演redSquare,blueSquare的俩个view @IBOutlet weak...@IBOutlet weak var redSquare: UIView!...,现在加上Dynamics,使其动态化 首先,我们得让imageView跟随我们的拖动而移动,用到Dynamics中的一个类--UIAttachmentBehavior 打开ViewController.swift...但是很明显,我们一放开拖动,imageView马上回到原始位置,显然我们更希望手拖动后,存在惯性,还可以移动一段距离,为了解决这个问题,继续下面的学习 三、UIPushBehavior 在停止拖动时分离视图
在学习开发登陆页的时候,遇到的问题分享如下: 首先是swift 3.0 中,NotificationCenter 设置 selector 如下: @IBOutlet weak var...//注意这里要在storyboard对最底部的控件设置约束,然后连线到.swift文件进行绑定 override func viewDidLoad() { super.viewDidLoad...intersection.origin.x, y: intersection.origin.y, width: intersection.width, height: 100) } UIView.animate...顺便吐槽一下,从安卓转过来,发现好多问题给出的解决方案都是 Object-C ,而且 Swift 版本更迭,变化很大,网上很多的解决方案经常需要自己微小调动才能正常使用。...给我这样的新手带来好多麻烦。 注:开发环境是Xcode 8.1 测试平台是 iOS 10.0
设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框 文本输入框是多数与社交相关的app中不可或缺的一个控件,这些文本输入框应该具备如下的功能: 1.在键盘为弹起时,输入框悬浮在界面底部...//文本控件 @IBOutlet weak var ourTextView: UIView!...,可取的键值如下: @available(iOS 3.2, *) public let UIKeyboardFrameBeginUserInfoKey: String //键盘的初始位置尺寸 为CGRect...类型的NSValue值 @available(iOS 3.2, *) public let UIKeyboardFrameEndUserInfoKey: String // 键盘的末位位置尺寸 为CGRect... String //与多任务相关 判断键盘是否属于当前应用 iOS9后可用 可以监听的与键盘相关信息的通知有如下几种: public let UIKeyboardWillShowNotification
IBAction和IBOutlet IBAction:只有返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线 @property (weak, nonatomic) IBOutlet...UIButton *btn; IBOutlet:只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线 -(IBAction)delete1{//移除控件[self.myTitle...UIView介绍 控件:界面中的所有元素 控件的共有属性:尺寸、位置、背景色等等 - 控件的共有属性封装在其父类——UIView中 UIView常见属性 superView:查看父控件 NSLog(@"...100, 100, 100); bounds:控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的xy通常为0) buleView.bounds = CGRectMake(0, 0, 300..., 100) center:控件中点的位置(以父控件的左上角为坐标原点) buleView.center = CGPointMake(self.view.frame.size.width * 0.5,
Profile.png 上图是我正在写的一个 Github 客户端的 Profile 页面,它的头部是一个单独的 View,包含了一些 UI 元素: class ProfileHeader: UIView...{ @IBOutlet var contentView: UIView!...而众所周知继承在 Swift 中是不被提倡的,我这边声明的Profile是个struct,是不能被继承的,所以这种方案也并不是最合适的方案。...,以一些可以直接被 View 使用的数据为输出。...defailtProfileItem } } } class ProfileHeader: UIView { // ...
UIView *shopCarView; //添加按钮 @property (weak, nonatomic) IBOutlet UIButton *addButton; //删除按钮 @property...(weak, nonatomic) IBOutlet UIButton *removeButton; 添加按钮的点击事件 - 定义一些位置的常量和变量 //总列数 NSInteger allCols...= 5); //添加一个商品,就可以删除一个商品,此时要改变删除按钮的状态 self.removeButton.enabled = YES; 移除按钮的点击事件 //移除最后一个商品 UIView...*lastShopView = [self.shopCarView.subviews lastObject]; [lastShopView removeFromSuperview]; //移除一个商品后,...说明购物车有位置可以装商品,要改变添加按钮的状态 self.addButton.enabled = YES; //如果购物车商品的数量为0,要设置删除按钮为不可点击 button.enabled = (
一个对象的分类是由其邻居的“多数表决”确定的,k个最近邻居(k为正整数,通常较小)中最常见的分类决定了赋予该对象的类别。若k = 1,则该对象的类别直接由最近的一个节点赋予。...无论是分类还是回归,衡量邻居的权重都非常有用,使较近邻居的权重比较远邻居的权重大。例如,一种常见的加权方案是给每个邻居权重赋值为1/ d,其中d是到邻居的距离。...@IBOutlet weak var panelView: UIView!...使用 alpha 表示预测类别,以预测样本为中心画一个圈,圈内为最近的 k 个样本。...kNN-Swift-1.png ARKit 实现 能 3D 展示多好,别急,下面就是用 ARKit 实现的 3D 版本。
// 返回的位置是针对view的坐标系。 // 调用时传入的view参数为空的话,返回的是触摸点在整个窗口的位置 。 open func location(in view: UIView?)...UIWindow 接收到事件后,首先判断自己能否响应触摸事件。如果能,那么 UIWindow 会从后往前遍历自己的子 UIView,将事件向下传递。...默认的next对象为: (1)UIView:若当前响应者是 UIViewController 的view,则next是 UIViewController,否则上一个响应者是其父 UIView。...(3)UIWindow:next为 UIApplication。 (4)UIApplication:next为 AppDelegate。 (5)AppDelegate:next为 nil。...class ViewController: UIViewController { @IBOutlet var blueView: UIView!
为了能够正确添加我们的按钮,我们必须删除当前的 ARSCNView并首先从对象库添加UIView作为底层。接下来,选择相同的ARKit SceneKit View并将其放回UIView之上。...横屏约束安全区 重新 Outlet 请记住,一个IBOutlet将sceneView链接到ARSCNView?因为我们删除了旧的ARSCNView,所以它打破了这个Outlet。我们需要重新考虑新的。...完成后,关闭“ 助理”编辑器。...在ViewController.swift中,将一个新的类变量声明为一个节点数组,我们将其初始化为空。...焦点方块隐藏/显示选项 当我们在屏幕上显示模型时,我们仍然看到焦点方块干扰了我们漂亮的模型。如果我们在安置后隐藏它,你怎么说?
圆角 label.png 因为我把这几个属性扩展到了 UIView 上,所以所有继承自 UIView 的控件都可以在 Storyboard 上方便的设置这几个属性了。...我以『看知乎』项目中的代码为例来说明一下我自己比较喜欢的做法。...@IBOutlet weak var agreeLabel: UILabel! @IBOutlet weak var dateLabel: UILabel!...关于面向协议编程 Swift2之后可以用 extension 给协议方法或者属性加上一个默认实现了,这使得 Swift 可以用协议模拟 Ruby 中用 module 实现的 mixin 效果,也就是通过协议扩展某个类的功能...,在刷新的时候会调用这个闭包,然后1秒后完成刷新。
在设置远程用户视频之前,还需要新建一个UIView用来显示远程视频,远程视频的显示会在该UIView内完成,新建一个UIView用来接收远程视频: @IBOutlet weak var remoteView...: UIView!...@IBOutlet weak var localVideo: UIView!...通过agoraKit.leaveChannel()可以离开频道,只有离开一个频道才能进入下一个频道,leaveChannel是异步操作,调用时并没有真正的退出频道,在真正的退出频道后,会触发didLeaveChannelWithStats...UIView,详细的设置可以参考demo。
无意中听说了有一个叫Sam Lu在Twitter上发起了一个100天做40个Swift小程序的活动,再加上国内看到了Allen_朝辉写的Swift学习的文章,心里暗自下了一个决定:30天写30个Swift...希望能有更多对Swift感兴趣的开发者加入这项#30天30个Swift小程序 的活动里面来。...@IBOutlet var imgBook: UIImageView! @IBOutlet var titleBook: UILabel!...@IBOutlet var pageBook: UILabel!...是修改了UIView的transform,传入要缩放的相对比例并创建对应的CGAffineTransform对象。
不透明, 如果设置为不透明, 不管该控件的透明度是否是半透明, 该控件后的其它控件将不会被绘制; -- Hidden : 隐藏该控件, 用户看不到本控件; -- Clears Graphics Context...中 : 按住 control 键, 将控件拖到 UIViewController.h 中; -- 设置 IBOutlet 的属性 : 控件拖到 UIViewController 中后, 弹出下面的对话框...属性 : -- Connection : 选择为 UI 控件创建 IBOutlet 还是 IBAction 属性类型; -- Name : IBAction 方法名; -- Type : 触发该事件的...自定义 UI 控件 (1) 自定义组件简介 自定义组件简介 : -- UIView 基类 : 所有的 UI 控件都继承了 UIView 基类, UI 组件在 UIView 提供的空白区域上绘制具体的细节...: 点击 界面设计文件中的 UIView 根控件, 使用 command + option + 3 打开身份检查器, 由身份检查器上可以看到 其 Custom Class 属性为 UIView, 因此该界面的根控件时
; ② 建立关联图示 : 打开辅助编辑器, 按住鼠标左键, 拖到 storyboard 中对应的控件上; 建立连接后, 属性前的圆圈变为实心; 3.创建第二个 TextField...---- ( 7 ) 实现加法逻辑 实现计算逻辑 : 1.实现位置 : 点击按钮后执行加法运算, 接收 界面中输入的 两个数字, 并将计算结果输出到界面中, 主要逻辑都在按钮的点击方法中实现的, 下面是按钮点击方法代码...Classes 勾选, 在弹出的对话框中 选择 iPhone 选项; ② 点击 ViewController, 在其属性查看器中, 选择对应的设计尺寸; 2.拷贝图片素材 : 图片素材都是在...Touch Up InSide 与上面定义的方法 : 右键点击控件, 在弹出的黑色对话框中找到 Touch Up Inside 方法, 点击方法后的圆圈, 直接拖到对应的方法上; 14.定义其它三个方向的按钮及方法...的扩展中; ① 设置控件属性参数 : 设置控件属性名称为 mainView, 引用为 weak 弱引用; 3.创建 UIView 对象 : 首先创建一个 UIView 对象, 代码为 UIView
控件; -- UIControl 主要作用 : 定义通用接口, 为活动控件的事件机制提供实现, 发生指定的动作后, 控件会初始化 Action 方法, 回调对应的事件处理方法; -- 事件处理方法 :..., 设置后该按钮会成为图片按钮, 之前设置的 Tittle 属性作废; (7) Background 属性 Background 属性 : 用于为按钮设置背景图片; -- 文本图片共存 : 该属性可以设置...输入完后关闭键盘 (1) 设置 IBOutlet 设置 IBOutlet : -- 拖控件到 OCViewController 中 : control + 左键 拖动控件到 ViewController...触摸背景关闭虚拟键盘 (1) 修改 Custom Class 修改背景类别 : -- 修改原因 : 默认的背景控件时 UIView, 该控件没有 IBAction 事件, 因此需要将背景控件设置为...将背景控件设置为 UIControl : 之前的 UIView 不能响应点击事件, 在身份检查器 面板将 Custom Class 由 UIView 修改为 UIControl; -- 2.
领取专属 10元无门槛券
手把手带您无忧上云