IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> xcode_swift -> 正文阅读

[移动开发]xcode_swift

设置根控制器

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        self.window = UIWindow.init(frame: UIScreen.main.bounds)
        let viewController = ViewController()
        let navigationController = UINavigationController(rootViewController: viewController)
        self.window?.rootViewController = navigationController     
        self.window?.makeKeyAndVisible()
        return true
    }
}

UIView

有关UIView的设置,背景、层级、大小、指针地址

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor.blue//主View背景色    
    var view1 = UIView(frame: CGRect(x:0,y:0,width: 100,height: 100))//UIview的创建
    view1.backgroundColor = UIColor.gray//背景颜色
    self.view.addSubview(view1)//主窗口显示
    let p3 = withUnsafePointer(to: &view1){ptr in
              return ptr}
    print("view3的指针地址为:\(p3)" )//输出指针地址
    /*
    addSubview(view: UIView)//普通添加
    sendSubviewToBack(view: UIView)//添加到最下层
    bringSubviewToFront(view: UIView)//添加到最上层
    insertSubview(view: UIView,atIndex: Int)//添加到制定层
    insertSubview(view: UIView,belowSubview: UIView)//添加到某个层级的下面
    insertSubview(view: UIView,aboveSubview: UIView)//添加到摸个层级的上面
    exchangeSubviewAtIndex(index1: Int, withSubviewAtIndex index2: Int)//交换层级
    */
    //界面背景图片
    self.view.layer.contents = UIImage(named:"image")?.cgImage   
}

得到屏幕大小

let yourFrame = UIScreen.main.bounds

打开新的控制器

func openViewController(){
    let newViewController = yUIView()
    //调用当前视图控制器实例的present方法,第一个参数表示需要打开的视图控制器实例,第二个参数表示是否以动画的方式打开视图控制器,第三个参数表示视图控制器被打开后的回调方法
     self.present(newViewController,animated: true,completion: nil)
    
    //第一个参数为要被push的视图控制器,第2个参数可以设置是否带动画效果
    //self.navigationController? .pushViewController(con, animated: true)
    
    //self.navigationController?.popToRootViewController(animated: true)//返回到根视图
    //self.navigationController?.popViewController(animated: true)//返回到上一视图
    //返回到指定视图
    //let viewAarray = self.navigationController?.viewControllers
    //self.navigationController?.popToViewController(viewAarray![2], animated: true)
}

UILabel

func yUILabel() {
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
    //背景色
    label.backgroundColor = UIColor.black
    //透明度
    label.alpha = 0.5
    //添加文字
    label.text = "Hello,world!"
    //文字颜色
    label.textColor = UIColor.white
    //字体大小
    label.font = UIFont(name: "ZapFino", size:20)
    //文本对齐方式
    label.textAlignment = NSTextAlignment.center//居中对齐
    //阴影颜色
    label.shadowColor = UIColor.gray
    //阴影偏移量
    label.shadowOffset = CGSize(width: -5,height: 5)
    //边框样式
    label.layer.cornerRadius = 20
    //边框颜色
    label.layer.borderColor = (CGColor)(red: 0, green: 255, blue: 0, alpha: 1)
    //边框厚度
    label.layer.borderWidth = 6
    //文字过长时的省略方式
    //隐藏尾部并显示省略号
    //label.lineBreakMode = NSLineBreakMode . byTruncatingTail
    //隐藏中间部分并显示省略号
    //label.lineBreakMode = NSLineBreakMode . byTruncatingMiddle
    //隐藏头部并显示省略号
    //label.lineBreakMode = NSLineBreakMode . byTruncatingHead
    //截去多余部分也不显示省略号
    //label.lineBreakMode = NSLineBreakMode . byClipping


    //文字大小自适应标签宽度,当文字超出标签宽度时,自动调整文字大小,使其不被截断
    //label.adjustsFontSizeToFitWidth = true
       
    //使标签可以显示多行文字
    //label.numberOfLines=2  //显示两行文字(默认只显示一行,设为0表示没有行数限制)
       
    //设置文本高亮
    //label.isHighlighted = true
    //设置文本高亮颜色
    //label.highlightedTextColor = UIColor .green
}

UITextField

func yUITextField(){
    let textField = UITextField(frame: CGRect(x: 75, y: 100, width: 200, height: 100))
    //背景色
    textField.backgroundColor = UIColor.white
    
    //字体颜色
    textField.textColor = UIColor.red
    //文本对齐方式
    //水平对齐
    //textField.textAlignment = . right  //水平右对齐
    textField.textAlignment = . center  //水平居中对齐
    //textField.textAlignment = . left  //水平左对齐
    //垂直对齐
    //textField.contentVerticalAlignment = . top   //垂直向上对齐
    textField.contentVerticalAlignment = . center   //垂直居中对齐
    //textField.contentVerticalAlignment = . bottom   //垂直向下对齐
    //字体
    textField.font = UIFont(name: "textfield", size: 14)
    
    //占位字符串
    //文本框提示文字
    textField.placeholder = "请输入密码"
    //textField.text = "一开始就在输入框的文字"
    
    //将输入的字符用圆点表示
    textField.isSecureTextEntry = true
    //设置返回键
    //textField.returnKeyType = UIReturnKeyType.done //表示完成输入

    //textField.returnKeyType = UIReturnKeyType.go //表示完成输入,同时会跳到另一页

    //textField.returnKeyType = UIReturnKeyType.search //表示搜索

    //textField.returnKeyType = UIReturnKeyType.join //表示注册用户或添加数据

    textField.returnKeyType = UIReturnKeyType.next //表示继续下一步

    //textField.returnKeyType = UIReturnKeyType.send //表示发送
    
    //开始编辑时默认清空输入框内容;
    //再次编辑就清空
    textField.clearsOnBeginEditing = true
    
    /*
     文本框的创建,有如下几个样式:
     UITextBorderStyle.None:无边框
     UITextBorderStyle.Line:直线边框
     UITextBorderStyle.RoundedRect:圆角矩形边框
     UITextBorderStyle.Bezel:边线+阴影
     */
    //设置边框样式为圆角矩形
    //textField.borderStyle =  UITextField.BorderStyle . roundedRect
    //文字大小超过文本框长度时自动缩小字号,而不是隐藏显示省略号
    //textField.adjustsFontSizeToFitWidth = true   //当文字超出文本框宽度时,自动调整文字大小
    //textField.minimumFontSize = 14   //最小可缩小的字号
    
    //背景图片设置
    //textField.borderStyle = . none  //先要去除边框样式
    //textField.background = UIImage (named: "background1" );
    
    //清除按钮(输入框内右侧小叉)
    //textField.clearButtonMode = UITextField.ViewMode . whileEditing   //编辑时出现清除按钮
    //textField.clearButtonMode = UITextField.ViewMode . unlessEditing //编辑时不出现,编辑后才出现清除按钮
    //textField.clearButtonMode = UITextField.ViewMode . always   //一直显示清除按钮
    
    /*
    设置文本框关联的键盘类型
    Default :系统默认的虚拟键盘
    ASCII Capable :显示英文字母的虚拟键盘
    Numbers and Punctuation :显示数字和标点的虚拟键盘
    URL :显示便于输入数字的虚拟键盘
    Number Pad :显示便于输入数字的虚拟键盘
    Phone Pad :显示便于拨号呼叫的虚拟键盘
    Name Phone Pad :显示便于聊天拨号的虚拟键盘
    Email Address :显示便于输入Email的虚拟键盘
    Decimal Pad :显示用于输入数字和小数点的虚拟键盘
    Twitter :显示方便些Twitter的虚拟键盘
    Web Search :显示便于在网页上书写的虚拟键盘
     */
    //textField.keyboardType =  UIKeyboardType . numberPad
    
    //使文本框在界面打开时就获取焦点,并弹出输入键盘
    //textField.becomeFirstResponder()

    //使文本框失去焦点,并收回键盘
    //textField.resignfirstresponder()
}

UIButton

func yUIButton() {
    /*
     //UIButton控件包括背景色、字体颜色、字体、单击状态等属性
     public enum UIButtonType : Int {
        //自定义类型,将属性全部采用默认值,需要开发者自行设置
        case custom
        //系统类型,系统定义好了一组属性设置
        case system
        //详情按钮类型,会在左边显示一个详情小图标
        case detailDisclosure
        //添加按钮类型,会在左边显示一个添加小图标
        case contactAdd
     */
    let button = UIButton(type: .custom)
    button.frame =  CGRect(x: 75, y: 100, width: 100, height: 50)
    
    //标题,第一个参数设置了按钮的标题文字,第二个参数设置了现实此标题文字时的按钮状态,.normal正常状态,.highlighted高亮状态,.disabled不可用状态,.selected选中状态
    button.setTitle("点我", for: .normal)
    //背景色
    button.backgroundColor = UIColor.yellow
    //字体颜色
    button.setTitleColor(UIColor.orange, for: .normal)
    //背景(backgroundImage)图片
    button.setBackgroundImage(UIImage(named: "Image"), for: .normal)
    //图片(image)(有2处展示图片的地方);
    button.setImage(UIImage(named: "八荒剑神"), for: .normal)
    
    //button.contentEdgeInsets = UIEdgeInsets(top: 0,left: 0,bottom: 0,right: 0)//设置整体内容区域的偏移量
    button.imageEdgeInsets = UIEdgeInsets(top: 5,left: 10,bottom: 5,right: 60)//只设置内容图片的位置偏移量
    button.titleEdgeInsets = UIEdgeInsets(top: 0,left: 10,bottom: 0,right: 0)//只设置内容标题的偏移量
    
    
    //设置点击事件,点击后触发弹窗提醒,使用UIAlert控件实现;
    //addTarget:第一个参数为执行此方法的对象,一般会填写当前类对象本身self;第二个参数为对应的方法;第三个参数为触发方法的条件,.touchDown手指按下触发,.touchDownRepeat多次重复按下时触发,.touchDragInside用户在控件范围内拖滑移动时触发,.touchDragoutSide用户在控件范围内按下,并拖拽到控件范围外抬起时触发,.touchDragExit用户手指拖滑结束时触发,.touchUpInside(单击)用户在控件范围内按下并在控件范围内抬起时触发,.touchUpOutside用户在控件范围内按下并在范围外抬起时触发,.touchCancel触摸事件被取消时触发,.valuechanged控件的Value值改变时触发
//    button.addTarget(self, action: #selector(addAlert) , for: .touchUpInside)
}

弹窗

func yUIAlertController() {
    //UIAlert弹窗控件
    //设置标题
    //内容message
    //点击响应事件,点击后弹窗消失;
    let alertController = UIAlertController(title: "系统提示",message: "您确定要离开吗?", preferredStyle: .alert)
    let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
    let okAction = UIAlertAction(title: "好的", style: .default, handler: {action in
        print("点击了确定")})
    alertController.addAction(cancelAction)
    alertController.addAction(okAction)
//    self.present(alertController, animated: true, completion: nil)
}

随机数-颜色随机

self.view.backgroundColor = UIColor(red:CGFloat(arc4random()%255)/255.0, green:CGFloat(arc4random()%255)/255.0, blue: CGFloat(arc4random()%255)/255.0,alpha: 1)

UISegmentedControl分段控制器

func yUISegmentedControl(){
    let items = ["登陆","注册","找回密码"]
    let segmented = UISegmentedControl(items: items)
    //设置位置
    segmented.frame = CGRect(x: 100, y: 200, width: 200, height: 50)
    
    //设置默认选中的索引,索引从0开始
    segmented.selectedSegmentIndex = 0
            
    //添加监听事件
//    segmented.addTarget(self, action: #selector(ViewController.SegmentedChanged(_:)), for: .valueChanged)
            
    
    //添加文字选项
    //segmented.insertSegment(withTitle: "option D", at: 4, animated: true)
    //添加图片选项(withRenderingMode(.alwaysOriginal)设置图片颜色为原颜色,而不是系统默认的蓝色)
    //segmented.insertSegment(with: UIImage(named:"Icon")?.withRenderingMode(.alwaysOriginal), at: 1, animated: true)
    //移除指定选项
    //segmented.removeSegment(at: 1, animated: true)
    //移除全部选项
    //segmented.removeAllSegments()
    //修改选项颜色
    //segmented.tintColor = UIColor.blue
    //修改选项文字
    //segmented.setTitle("newName", forSegmentAt: 3)
    //修改选项图片
    //segmented.setImage(UIImage(named: "newIcon"), forSegmentAt: 1)
    //修改选项内容偏移位置
    //segmented.setContentOffset(CGSize(width: 5, height: 5), forSegmentAt: 1)
    
    //添加到视图中
//    self.view.addSubview(segmented)
}

UIImageView-UIImage-动画

func yUIImage(){
    let imageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 50, height: 50))
    var imageArray = Array<UIImage>()
    for index in 0..<7{
        let image = UIImage (named: "png\(index+1)")
        imageArray.append(image!)
    }
    //设置动画图片数组
    imageView.animationImages = imageArray//用于设置要播放的动画图片数组
    /*
     highlightedAnimationImages,用于设置处于高亮状态的UIImageView的动画图片数组
     */
    imageView.animationDuration = 4//用于设置将动画播放一遍的时长
    imageView.animationRepeatCount = 1//设置动画播放的循环次数,如果为0,则是无限循环
//    self.view.addSubview(imageView)
    imageView.startAnimating()
    /*
     stopAnimating用于停止UIImageView的播放
     */
}

UISlider滑块-拖动滑块改变View的大小changeView5Value()

func yUISlider(){
    var value : Float!
    let slider = UISlider(frame: CGRect(x: CGFloat(arc4random_uniform(UInt32(UIScreen.main.bounds.width))+1), y: CGFloat(arc4random_uniform(UInt32(UIScreen.main.bounds.height))+1), width: 100, height: 100))
    slider.isContinuous = true//用于设置UISlider控件的触发方法是否是连续触发,if true,用户滑动时触发方法多次执行,if false,只有当用户滑动操作结束时方法才会触发
    slider.minimumValue = 0//控件的最小值,即滑块在最左端时控件的值
    slider.maximumValue = 100//控件的最大值,即滑块在最右端时控件的值
    slider.value = 10//当前默认值,此条语句必须在minimumValue、maximumValue之后
    value = slider.value
    slider.minimumTrackTintColor = UIColor.green//滑块在左中轴的颜色
    slider.maximumTrackTintColor = UIColor.red//滑块在右中轴的颜色
    slider.thumbTintColor = UIColor.gray//滑块本身的颜色
//    slider.addTarget(self, action: #selector(changeView5Value), for: .valueChanged)
//    self.view.addSubview(slider)
}
/*
@objc func changeView5Value(slider:UISlider){
    let valueNow = slider.value
    var w : Float = Float(view5.bounds.width)
    var h : Float = Float(view5.bounds.height)
    w += (valueNow - Float(value))
    h += (valueNow - Float(value))
    view5.frame = CGRect(x: randomX, y: randomY, width: CGFloat(w), height: CGFloat(h))
    value = valueNow
}
*/

UIScrollview滚动视图

func yUIScrollview(){
    let scrollView = UIScrollView(frame: UIScreen.main.bounds)
    scrollView.backgroundColor = UIColor.orange
    //加背景图
    let imageView2 = UIImageView(frame: UIScreen.main.bounds)
    imageView2.image = UIImage(named: "png")
    scrollView.addSubview(imageView2)
    //用于设置滚动视图的内容大小,内容区域决定可滚动的范围
    scrollView.contentSize = CGSize(width: UIScreen.main.bounds.width * 2, height: UIScreen.main.bounds.height * 2)
    //用来设置是否开启回弹效果,包括水平方向的回弹效果和竖直方向的回弹效果
    scrollView.bounces = true
    scrollView.alwaysBounceHorizontal = true//用来设置是否始终开启水平方向的回弹效果
    scrollView.alwaysBounceVertical = true//用于设置是否始终开启竖直方向的回弹效果
    //设置是否开启分页效果,开启分页效果后,对UIScrollView进行滑动操作时会有自动定位的功能
    scrollView.isPagingEnabled = true
    //用于设置是否显示水平提示条
    scrollView.showsHorizontalScrollIndicator = true
    //用于设置是否显示竖直提示条
    scrollView.showsVerticalScrollIndicator = true
    //设置提示的风格
    scrollView.indicatorStyle = .black
    /*
     提示风格有三种,1. .default默认风格,2. .black黑色风格,3. .white白色风格
     */
    //true,当用户单击屏幕上方的状态栏时,滚动视图就会自动滚动到顶端
    scrollView.scrollsToTop = true//状态栏指的是屏幕上显示服务商和时间的一栏
    
    scrollView.minimumZoomScale = 0.5//设置最小缩小倍率
    scrollView.maximumZoomScale = 2.0//设置最大放大倍率
    //设置缩放是否支持回弹效果
    scrollView.bouncesZoom = true
    //设置代理
//    scrollView.delegate = self
}
//滚动视图是否支持点击状态栏滚动回顶部
func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool{
    print("scrollViewShouldScrollToTop")
    return true
}
//滚动视图已经移动到顶端时触发的方法
func scrollViewDidScrollToTop(_ scrollView: UIScrollView){
    print("scrollViewDidScrollToTop")
}
//滚动视图将要开始拖拽时触发的方法
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    print("scrollViewWillBeginDragging")
}
//滚动视图拖拽将要完成时触发的方法
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity:CGPoint, targetContentoffset: UnsafeMutablePointer<CGPoint>){
    print("scrollViewWillEndDragging")
}
//滚动视图将要开始减速时触发的方法
func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
    print("scrollViewWillBeginDecelerating")
}
//滚动视图减速完成时执行的方法
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    print("scrollViewDidEndDecelerating")
}
//滚动视图将要开始缩放时触发的方法
func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?){
    print("scrollViewWillBeginZooming")
}
//滚动视图缩放过程中触发的方法
func scrollViewDidZoom(_ scrollView: UIScrollView){
    print("scrollViewDidZoom")
}
//滚动视图拖拽结束时触发的方法
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool){
    print("scrollViewDidEndDragging")
}
//滚动视图缩放结束时触发的方法
func scrollViewDidEndZoom(_ scrollView: UIScrollView, with view: UIView?, atAcale scale: CGFloat){
    print("scrollViewDidEndZoom")
}
//滚动视图滚动动画结束时触发的方法
func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {
    print("scrollViewDidEndScrollingAnimation")
}
//滚动视图滚动过程中触发的方法
func scrollViewDidScroll(_ scrollView: UIScrollView){
    print("scrollViewDidScroll")
}
//设置可以进行缩放操作的子视图
func viewForZooming(in scrollView: UIScrollView) -> UIView?{
    print("viewForZooming")
    return scrollView.subviews.first
}

UITableView

func yUITableView(){
    let tableView1 = UITableView(frame:  CGRect(x: 0, y: 0, width:  UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height) , style: .plain)//style有两种,plain为规范的列表视图风格,grouped为分组的列表视图风格
    tableView1.backgroundColor = UIColor.blue
    tableView1.showsHorizontalScrollIndicator = true//竖直进度条
//    tableView1.delegate = self //设置代理,使用时不注释
//    tableView1.dataSource = self //设置代理,使用时不注释
    
    //单元格左侧显示图标+
    tableView1.setEditing(true, animated: true)
    
    
//    self.view.addSubview(tableView1)
}
//用于设置表格视图中的行数,这个方法会传入一个分区的参数,可以通过这个参数判断不同的分区设置不同的行数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//        if section == 0 {
//            return 3
//        }else{
//            return 10
//        }
    return 2
}
func numberOfSections(in tableView: UITableView) -> Int {
    return 2
}
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
    return UITableViewCell.EditingStyle.insert
    /*
        .none 默认,不显示任何编辑图标
        .delete 为-,点击删除一行
        .insert 为+,点击插入一行
        */
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == UITableViewCell.EditingStyle.insert{
//        count += 1  //cell个数要更新
        tableView.insertRows(at: [indexPath], with: UITableView.RowAnimation.right)
    }
}
//用于展示每一行数据的cell视图,这个方法的indexPath参数中包含分区与行数的信息
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->UITableViewCell{
    var cell = tableView.dequeueReusableCell(withIdentifier: "cellID")
    if cell == nil{
        cell = UITableViewCell(style: .default, reuseIdentifier: "cellID")
        /*
         UITableViewCell的风格:default默认风格,value1“系统设置”中的cell风格,value2”联系人“应用中的cell风格,subtitle包含一个子标题的cell风格
         */
    }
    cell? .textLabel? .text = "第\(indexPath.section)分区第\(indexPath.row)行"
    //cell? .detailTextLabel? .text = "第\(indexPath.row)行"//在UITableViewCell的风格为UITableViewCellStyleSubtitle时有效,为cell控件的副标题标签
    //cell? .imageView? .image = UIImage(named: "image")
    //cell? .backgroundColor = UIColor.purple
    //cell? .accessoryType = .checkmark//disclosureIndicator前进箭头,detailDisclosureButton复合样式,checkmark对号图标样式,detailButton详情按钮样式
    return cell!
}
/*
 //自定义cell,具有image和label
 //用于展示每一行数据的cell视图,这个方法的indexPath参数中包含分区与行数的信息
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->UITableViewCell{
     var cell = tableView.dequeueReusableCell(withIdentifier: "cellID")
     if cell == nil{
         cell = UITableViewCell(style: .default, reuseIdentifier: "cellID")
         /*
          UITableViewCell的风格:default默认风格,value1“系统设置”中的cell风格,value2”联系人“应用中的cell风格,subtitle包含一个子标题的cell风格
          */
     }
     //cell? .textLabel? .text = "第\(indexPath.section)分区第\(indexPath.row)行"
     
     let label = UILabel(frame: CGRect(x: 20, y: 20, width: self.view.bounds.size.width-40, height: 60))
     label.text = "第\(indexPath.section)分区第\(indexPath.row)行"
     label.font = UIFont.systemFont(ofSize: 60)
     cell?.addSubview(label)

     let image = UIImage(named: images[indexPath.row])
     let imageView = UIImageView(image: image)
     imageView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: 100)
     cell?.addSubview(imageView)
     cell?.sendSubviewToBack(imageView)
     cell? .backgroundColor = UIColor(red: CGFloat(arc4random()%255)/255.0, green: CGFloat(arc4random()%255)/255.0, blue: CGFloat(arc4random()%255)/255.0, alpha: 1)

     return cell!
 }
 */
//label在imageview1右侧10
func tableView(_ tableView: UITableView, indentationLevelForRowAt indexPath: IndexPath) -> Int {
    return 10
}
//设置行高
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
//        if indexPath.section == 0 {
//            //第1分区行高为100个单位
//            return 100
//        }else{
//            return 44
//        }
    return 44
}
//设置分区尾视图高度
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 50
}
//设置分区头视图高度
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 50
}
//设置分区头视图
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 50))
    view.backgroundColor = UIColor.red
    return view
}
//设置分区尾视图
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let view = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 50))
    view.backgroundColor = UIColor.green
    return view
}
//点击cell时调用的方法
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    /*
     弹窗
     */
    let alertController = UIAlertController(title: "系统提示",message: "当前cell内容为:\(indexPath.row)", preferredStyle: .alert)
    let cancelAction = UIAlertAction(title: "返回", style: .cancel, handler: nil)

    alertController.addAction(cancelAction)
//    self.present(alertController, animated: true, completion: nil)
    /*
     自动取消点击结果
     */
    //点击cell后会自动取消选中效果
    tableView.deselectRow(at: indexPath, animated:true)
    /*
     增加单元格
     */
//    let row = count
//    let indexPath = IndexPath(row:row,section: 0)
//    count += 1
//    tableView?.insertRows(at: [indexPath], with: UITableView.RowAnimation.none)
}

UINavigationController

func yUINavigationController(){
    //标签栏选中颜色
//    tabBar.tintColor = UIColor.orangelet
    //将yUIView()控制器设为带有导航条的界面
    let nav = UINavigationController(rootViewController: yUIView())
    //将nav加入标签栏成为界面之一
//    addChild(nav)
    /*
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "goto BBBBB", style: .plain, target: self, action: #selector(nextPage))
    //设置导航栏背景颜色//barTintColor背景色,不是什么backgroundColor也不是tintColor。
    self.navigationController? .navigationBar.barTintColor = UIColor.yellow

    //translucent半透明的,看着会有一层毛玻璃效果。
    self.navigationController? .navigationBar.isTranslucent = true
  
    //也可以设置一张图当作背景
    self.navigationController? .navigationBar.setBackgroundImage(UIImage(named: "image2"), for: .default)

    //设置标题样式
    self.navigationController? .navigationBar.titleTextAttributes = [
        .foregroundColor: UIColor.black,
        .font: UIFont(name: "MarkerFelt-Thin", size: 20)!
    ]
    //设置左边或者右边的按钮
    navigationItem.leftBarButtonItem = UIBarButtonItem(
        title: "Button",
        style: .plain,
        target: self,
        action: #selector(buttonTappedAction)
    )
//        navigationItem.rightBarButtonItem = UIBarButtonItem(
//            image: UIImage(named: "yourImage"),
//            style: .plain,
//            target: self,
//            action: #selector(buttonTappedAction)
//        )
//        //更改按钮的颜色
//        navigationBar.tintColor = UIColor.red
//        //自定义View
//        let button = UIButton()
//        button.setImage(UIImage(named: "rainbow-circle"), for: .normal)
//        navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
//        //设置字体
//        let regularBarButtonTextAttributes: [NSAttributedString.Key: Any] = [
//            .foregroundColor: UIColor.orange,
//            .font: UIFont(name: "MarkerFelt-Thin", size: 16)!
//        ]
//        let leftButton = self.navigationItem.leftBarButtonItem
//        leftButton?.setTitleTextAttributes(regularBarButtonTextAttributes, for: .normal)
//        leftButton?.setTitleTextAttributes(regularBarButtonTextAttributes, for: .highlighted)
//
//        let rightButton = self.navigationItem.leftBarButtonItem
//        rightButton?.setTitleTextAttributes(regularBarButtonTextAttributes, for: .normal)
//        rightButton?.setTitleTextAttributes(regularBarButtonTextAttributes, for: .highlighted)
//
//        //设置文字或者图片颜色
//        navigationBar.tintColor = UIColor.red
//
//        //设置返回按钮
//        //默认的返回按钮包含一个返回的图片和文字,文字是控制器的标题,没有默认是Back。
//        navigationItem.backBarButtonItem = UIBarButtonItem(
//                    title: "back",
//                    style: .plain,
//                    target: nil,
//                    action: nil
//         )
 */
}

UICollectionView

func yUICollectionView(){

    //创建UICollectionView控件,设置代理为当前控制器
    let layout = UICollectionViewFlowLayout()
    layout.scrollDirection = .vertical
    //collectionViewCell大小为(100,150)
    layout.itemSize = CGSize(width: 100,height: 150)
    
    layout.minimumLineSpacing = 30 //用于设置最小的行间距
    layout.minimumInteritemSpacing = 10//用于设置最小的列间距
    
    //cell上间距是10,左右间距50;
    let collectionView = UICollectionView(frame: CGRect(x: 50, y: 10, width: UIScreen.main.bounds.width-100, height: UIScreen.main.bounds.height-10) , collectionViewLayout: layout)
    collectionView.backgroundColor = UIColor.red
    collectionView.register(NSClassFromString("UICollectionViewCell"), forCellWithReuseIdentifier: "cellID")
    //设置代理
//    collectionView.delegate = self
//    collectionView.dataSource = self
//    self.view.addSubview(collectionView)
}
//设置分区数
func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 2
}
//设置每个分区载体的item数
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 10
}
//设置每条数据载体的item
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let identifier = "reusedCell"
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath)
    
    let imageView: UIImageView? = cell.viewWithTag(1) as? UIImageView
    if imageView == nil{
        let image = UIImage(named: "images[indexPath.row]")
        let imageView = UIImageView(image: image)
        imageView.frame = CGRect(x: 0, y: 0, width: 150, height: 135)
        imageView.layer.opacity = 0.5
        imageView.tag = 1
        cell.addSubview(imageView)
    }else{
        imageView? .image = UIImage(named: "images[indexPath.row]")
    }
    return cell
}
//cell点击事件
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let cell = collectionView.cellForItem(at: indexPath)
    let imageView = cell? .viewWithTag(1)
    imageView? .layer.opacity = 1.0
}

自定义UITabBarController

class yUITabBarController: UITabBarController {

    var selectedBtn: UIButton = UIButton()
    override func viewDidLoad() {
        super.viewDidLoad()
        //删除现有的tabBar
        let rect = self.tabBar.frame;
        self.tabBar.removeFromSuperview()
        //测试添加自己的视图
        let myView = UIView()
        
        myView.frame = CGRect(x: rect.minX, y: rect.maxY - rect.size.width/5, width: rect.size.width, height: rect.size.width/5)
        myView.backgroundColor = UIColor.red
        self.view.addSubview(myView)
        
        for i in 0...5 {
            
            let btn = UIButton()
                  
            let imageName  = "TabBar\(i + 1)"
            let imageNameSel = "TabBar\(i + 1)Sel"
            btn.backgroundColor = UIColor(red: CGFloat(arc4random()%255)/255.0, green: CGFloat(arc4random()%255)/255.0, blue: CGFloat(arc4random()%255)/255.0, alpha: 1)
            btn.setImage(UIImage.init(named: imageName), for: .normal)
            btn.setImage(UIImage.init(named: imageNameSel), for: .selected)
            
            let x = CGFloat(i * Int(myView.frame.size.width) / 5)
            var height = myView.frame.size.height/1.5
            if i == 0 || i == 4{
                height = myView.frame.size.height
            }
            btn.frame = CGRect(x: x, y: 0, width: myView.frame.size.width / 5, height: height);
          
            if i == 0 || i == 4{
                btn.layer.cornerRadius = btn.frame.size.width/2
                btn.clipsToBounds = true
            }
            myView.addSubview(btn)
                  
            btn.tag = i;//设置按钮的标记, 方便来索引当前的按钮,并跳转到相应的视图
          
            //带参数的监听方法记得加"冒号"
            btn.addTarget(self, action: #selector(clickBtn),  for:.touchUpInside)
          
            //设置刚进入时,第一个按钮为选中状态
            if (0 == i) {
                btn.isSelected = true;
                selectedBtn = btn;  //设置该按钮为选中的按钮
            }
        }
    }

    @objc func clickBtn(button: UIButton) {
        //1.先将之前选中的按钮设置为未选中
        selectedBtn.isSelected = false
        //2.再将当前按钮设置为选中
        button.isSelected = true
        //3.最后把当前按钮赋值为之前选中的按钮
        selectedBtn = button
        //4.跳转到相应的视图控制器.
//        switch button.tag {
//        case 0:
//
//        case 1:
//
//        }
        
    }
      

}

view1位置跟随手指位置

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        let view1 = UIView(frame: CGRect(x: 100, y: 50, width: 100, height: 100))
        //获取手指
        let touch = (touches as NSSet).anyObject() as! UITouch
        let nowLocation = touch.location(in: self.view)
        let preLocation = touch.previousLocation(in: self.view)
        //获取两个手指的偏移量
        let offsetX = nowLocation.x - preLocation.x
        let offsetY = nowLocation.y - preLocation.y
        //获取view的中心
        var center = view1.center
        //修正view的中心为偏移后的
        if(nowLocation.x < center.x+50 && nowLocation.x > center.x-50){
            if(nowLocation.y < center.y+50 && nowLocation.y > center.y-50){
                center.x += offsetX
                center.y += offsetY
                view1.center = center
            }
        }
    }
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:28:08  更:2021-09-14 13:29:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:26:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码