UIView *view1 = [[UIView alloc] init];
view1.frame = CGRectMake(50, 50, 200, 200);
view1.backgroundColor = [UIColor yellowColor];
[self.view addSubview:view1];
//frame是实际视图大小;
CGFloat x = view1.frame.origin.x;//获取view的横坐标;
CGFloat y = view1.frame.origin.y;//获取view的纵坐标;
CGFloat width = view1.frame.size.width;//获取view的宽度;
CGFloat height = view1.frame.size.height;//获取view的高度;
//bounds是边框大小;x,y永远为零;
CGFloat xBounds = view1.bounds.origin.x;//获取view的横坐标;
CGFloat yBounds = view1.bounds.origin.y;//获取view的纵坐标;
CGFloat widthBounds = view1.bounds.size.width;//获取view的宽度;
CGFloat heightBounds = view1.bounds.size.height;//获取view的高度;
//center 中心点;
CGFloat xCenter = view1.center.x;
CGFloat yCenter = view1.center.y;
NSLog(@"frame x=%.0f y=%.0f width=%.0f height=%.0f",x,y,width,height);
NSLog(@"bounds x=%.0f y=%.0f width=%.0f height=%.0f",xBounds,yBounds,widthBounds,heightBounds);
NSLog(@"center x=%0.f y=%0.f",xCenter,yCenter);
//坐标是根据父视图的位置来设置的,不会跨层;
UIView *view2 = [[UIView alloc] init];
view2.frame = CGRectMake(20, 20, 50, 50);
view2.backgroundColor = [UIColor redColor];
view2.tag = 101;//唯一标示值;
[view1 addSubview:view2];
UIView *view3 = [[UIView alloc] init];
view3.frame = CGRectMake(100, 100, 50, 50);
view3.backgroundColor = [UIColor redColor];
view3.tag = 102;
[view1 addSubview:view3];
for (UIView *subView in subViewArray) {
if (subView.tag == 101) {
subView.backgroundColor = [UIColor blackColor];
} else {
subView.backgroundColor = [UIColor whiteColor];
//能获取指定tag标识符的View;
UIView *v = [view1 viewWithTag:101];
v.backgroundColor = [UIColor purpleColor];
实现效果如下:
github主页:
https://github.com/chenyufeng1991
。欢迎大家访问!
iOS控件其实是有父子关系的,可以进行相互包含。我们通过代码来演示一下:#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; UIView *view1
这里我们默认用storyboard启动:
首先我们要在白色的屏幕上面创建一个
父
视图
SuperView(蓝色的背景),在
父
视图
里面创建四个小
视图
(橘黄色的背景)
下面看代码,
在SuperView.h文件里面:
#import <UIKit>
@interface SuperView :
UIView
{
UIView
* _view01;
UIView
* _view02;
UIView
* _view03;
UIView
* _view04;
//声明创建
视图
函数
-(void) create
#怎么获取view在
父
类中的frame, 或者说
父
类
UIView
中SubView的坐标怎么转换成在
父
类
UIView
中的坐标
// 将像素point由point所在
视图
转换到目标
视图
view中,返回在目标
视图
view中的像素值
- (CGPoint)convertPoint:(CGPoint)point toView:(
UIView
*)view;
// 将像素point从view中转换到当前
视图
...
for (
UIView
* next = [self superview]; next; next = next.superview) {
UIResponder *nextResponder = [next nextResponder];
UIView
的使用
UIView
原理
1.它是一个
iOS
开发
中非常重要的类。
UILabel,UIButton,UIImageView
父
类或间接
父
类都是
UIView
,换句话说只要是界面上能看到的东西都是
UIView
2.坐标系的属性和方法
@property(nonatomic) CGRect frame;
@property(nonatomic) CGRect
抠图和换背景是
iOS
开发
中常用的操作。抠图指的是将图片中的某一部分从背景中分离出来,成为独立的图层,以便进行后续处理。换背景则是将原来的背景替换为新的背景图片或颜色。以下是实现这两种操作的步骤。
1. 打开 Xcode,新建
项目
,导入要处理的图片。
2. 选中要抠图的部分,使用矩形框或魔棒工具选择抠图区域,再使用钢笔工具对边缘进行微调。
3. 点击图像菜单,选择 “裁剪” 操作,将选中的部分剪切出来。得到一张只包含抠出部分的透明背景 PNG 图片。
4. 将抠出来的图片添加到
项目
中。在代码中使用 CALayer 及其 mask 属性加载图片,设置 mask 为生成的透明 PNG 图片即可。
1. 导入要处理的图片和背景图片。
2. 将背景图片作为
UIView
的背景色或作为 UIImageView 的 image 属性设置。
3. 将要更换背景的图片作为一个 UIImageView 添加到
视图
中。
4. 修改 UIImageView 的 blendMode 属性,将混合模式设置为 Destination In。
以上是
iOS
开发
中抠图和换背景的简单介绍和实现步骤。通过这些操作可以让图片更加美观、实用和个性化。