(6)UIView常见属性二
例如创建一个view视图,view是最纯洁的控制,必须得指定它的位置,而不像其他的控件像UISwitch默认都有一个位置

在viewDidLoad方法中打印它的位置:

将控件放入一个视图中,只需移动白色的视图,里面的子控件也会跟着移动,因为里面的控件的frame是相对子父控件左上角为坐标原点


注意:bounds和frame的相同点都是能表示宽度和高度,所以获取控件的宽度和高度有两种方法一种是通过bounds另一种是通过frame

而获取位置(x\y)值只能通过self.view.frame.origin.x/y方式来获取


center是中心点在父控件中的位置

项目中用到的图像资源都可以放在Images.xcassets中, 可以将图片直接托入,也可以将整个图片文件夹放入到里面,但访问的时候,只需直接加文件名就可以访问得到。

给按钮添加背景图片

设置它的大小,让它不偏扁

在没有设置按钮高度图片时,按下去的时候也会闪动,这是因为按钮的类型为系统类型 , 只要你的按钮类型选择为system,在按下去的时候都会变灰

当要设置高亮图片时,记得将按钮类型设置为custom再设置高亮图片时,就可以设置成想要的图片效果,如下效果:

添加和删除按钮都添加三种状态显示不同的图片, 三种状态:正常、高亮、禁用

当有两三个多个按钮共用一个方法时,得将按钮传进去,将类型改成UIButton,如下图



可通它的坐标位置来判断点击了哪个按钮, 用位置来判断这种方式不好因为需求会随时变化,所以改用另一种方式来判断通过用tag值来设置

接下来使用纯代码来创建以上的效果;


使用纯代码如何实现多个按钮共用一个方法可以如下操作:

使用tag值来区别也有不好的地方,将来有可能会重复

将创建按钮的重复代码抽取出来,方便调用

然后再用storyBoard或代码创建一个白色的view控件:

使用storyboard将属性托线方便方法中使用该属性

在方法中实现点击加号添加一个UIImageView和UILabel控件

效果图如下:

这种方式添加有很多问题,每次添加都在同一个位置,而且每次的UIImageView和UILabel都是添加到shopView中这样会很多问题。
解决方法可以使用先将UIImageView和UILabel添加到一个控件中去,再将这个控件添加到白色view中去,这样可以方便调位置,同时也不用理会里面的控件的位置
解决不同位置的布局:让它添加到白色视图时的布局,可以能过学习九宫格方式来实现。

为了方便控件,将图片和lable添加到一个父控件,然后多们只需控制父控件的位置就可以解决不同位置的问题:

效果图如下:

此时点多几次添加都是在同一个位置添加,用xcode中的调试工具可以看出点了多次:

解决这个方法,就是将红色控件的x和y值更改就可以改变位置
(6)UIView常见属性二的更多相关文章
- UIView常见属性总结
一 UIVIew 常见属性 .frame 位置和尺寸(以父控件的左上角为原点(,)) .center 中点 (以父控件的左上角为原点(,)) .bounds 位置和尺寸(以自己的左上角为原点 (,)) ...
- initWithNibName&initWithCoder &awakeFromNib&UIView常见属性方法
第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第 二.initWithCoder 是一个类在IB中创建 ...
- UIView常见属性设置汇总
1.圆角设置 viewT.layer.cornerRadius = 10;//设置那个圆角的有多圆 viewT.layer.borderWidth = 10;//设置边框的宽度,当然可以不要 view ...
- (5)UIView常见属性
此时打印的所有子控件会把使用自动布局的控件也打印出来,不准确,所以得去掉这两个选项,再进行打印 使用实例如下: viewWithTag的注意点,当有多个相同的Tag值时,它是先找到第一个Tag值,而不 ...
- UIView的常见属性
UIView的常见属性: @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDyn ...
- iOS开发之UIView的常见属性
1.所有控件都继承自UIView,UIView的常见属性如下: @property(nonatomic,readonly) UIView *superview;获得自己的父控件对象 @property ...
- iOS基础--UIView的常见属性
UIView的常见属性以及方法 @property(nonatomic,readonly) UIView *superview; // 获得自己的父控件对象 @property(nonatomic,r ...
- CALayer基本介绍与常见属性
属性框架:QuartzCore CA: CoreAnimation -> 核心动画,所有的核心动画都是添加给layer的! 与UIView的区别: 1.layer负责内容的展示,不接受任何用户交 ...
- UIScrollView常见属性
什么是UIScrollView •设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 • •当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 • •普通的UIV ...
随机推荐
- 网页标题title的闪动提示
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- Vue.js 介绍入门
Vue.js 的目标 是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.Vue.js 是一个用于创建 Web 交互界面的库.它让你通过简单而灵活的 API 创建由数据驱动的 UI 组件. ...
- 轻量级高性能ORM框架:Dapper高级玩法
Dapper高级玩法1: 数据库中带下划线的表字段自动匹配无下划线的Model字段. Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; 备 ...
- Vue中应用CORS实现AJAX跨域,及它在 form data 和 request payload 的小坑处理
基本概念部分(一):理解CORS 说道Vue的跨域AJAX,我想先梳理一遍CORS跨域,"跨域资源共享"(Cross-origin resource sharing),它是一个W3 ...
- 搭建nexus私服(maven)
这里提供nexus的直接下载页面的链接: https://www.sonatype.com/download-oss-sonatype maven获取依赖jar包是从中央仓库获取,但很莫名的出现jar ...
- 【Python3之多进程】
一.进程和线程的简单解释 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 用生活举例: (转自阮一峰网络日志) 1.计算机的核心是CPU,它承担了所有 ...
- Student implements java.io.Serializable
package JBJADV003; public class Student implements java.io.Serializable { private String name; priva ...
- Java 9 揭秘(9. 打破模块封装)
Tips 做一个终身学习的人. 在此章节中,主要介绍以下内容: 什么是打破模块的封装 如何使用命令行选项将依赖项(添加需要)添加到模块 如何使用--add-exports命令行选项导出模块的未导出包, ...
- React环境配置
现在开始配置一个基础项目. 创建项目文件夹:C:\Users\Danny\Desktop\React npm init 创建package.json文件 下面的所有安装,都是--save-dev,因为 ...
- 100+个MySQL调试和优化技巧
MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思 ...