Objective c 隐藏某些视图时在视图上重新定位UIImageView
我有一个UIView,一行中有一些图像,这些图像将被隐藏,以便显示我收到的功能。我一直在四处搜索,但还没有找到重新定位这些UIImageView以使其居中的方法 我的意思是,如果我有以下行:Objective c 隐藏某些视图时在视图上重新定位UIImageView,objective-c,ios,xcode,uiview,hidden,Objective C,Ios,Xcode,Uiview,Hidden,我有一个UIView,一行中有一些图像,这些图像将被隐藏,以便显示我收到的功能。我一直在四处搜索,但还没有找到重新定位这些UIImageView以使其居中的方法 我的意思是,如果我有以下行: |X||X||X||X||X||X||X| 我隐藏了我想展示的第二个和第五个元素 |X||X||X||X||X| 但我明白了 |X| |X||X| |X||X| 是否有UIView属性来控制它,或者我必须手动创建不同的UIView,或者以编程方式在代码中添加元素?现在我只使用UIIma
|X||X||X||X||X||X||X|
我隐藏了我想展示的第二个和第五个元素
|X||X||X||X||X|
但我明白了
|X| |X||X| |X||X|
是否有UIView属性来控制它,或者我必须手动创建不同的UIView,或者以编程方式在代码中添加元素?现在我只使用UIImageView元素的隐藏属性
提前谢谢 试试这个尺码!;-)
ViewController.h
#定义缓冲区10
#定义宽度90
#进口
@界面ViewController:UIViewController
@属性(强,非原子)NSMUTABLEARRY*ViewArray;
-(iAction)hideViews:(id)发送方;
-(无效)中心可视视图;
@结束
ViewController.m
#导入“ViewController.h”
@实现视图控制器
@综合视景阵列;
-(无效)viewDidLoad{
[超级视图下载];
NSMutableArray*colorArray=[NSMutableArray];
[colorArray addObject:[UIColor redColor]];
[colorArray addObject:[UIColor orangeColor]];
[colorArray addObject:[UIColor yellowColor]];
[colorArray addObject:[UIColor greenColor]];
[colorArray addObject:[UIColor blueColor]];
[colorArray addObject:[UIColor purpleColor]];
[colorArray addObject:[UIColor blackColor]];
[self-setViewArray:[NSMutableArray]];
对于(int i=0;i<7;i=i+1){
UIView*view=[[UIView alloc]initWithFrame:CGRectMake(缓冲区+((宽度+缓冲区)*i),缓冲区,宽度,宽度)];
[查看setBackgroundColor:[colorArray objectAtIndex:i]];
[[self-ViewArray]addObject:view];
[[self view]addSubview:view];
}
}
-(iAction)hideViews:(id)发件人{
对于(int i=0;i<[[self-ViewArray]计数];i=i+1){
如果(i==1 | | i==4){
[(UIView*)[[self-ViewArray]objectAtIndex:i]setHidden:YES];
}
}
[self-centerVisibleViews];
}
-(无效)中心可视视图{
int visibleViews=0;
对于(int i=0;i<[[self-ViewArray]计数];i=i+1){
如果(![(UIView*)[[self-ViewArray]objectAtIndex:i]isHidden]){
visibleViews=visibleViews+1;
}
}
浮动总宽度=(缓冲区*2)+(宽度*[[self-ViewArray]计数])+(缓冲区*([[self-ViewArray]计数]-1));
浮点visibleWidth=(缓冲区*2)+(宽度*VisibleView)+(缓冲区*(VisibleView-1));
//用动画让它变得性感!!!
[UIView animateWithDuration:1.0
动画:^{
浮动偏移=(总宽度-可见宽度)/2.0;
对于(int i=0;i<[[self-ViewArray]计数];i=i+1){
UIView*thisView=[[self-ViewArray]objectAtIndex:i];
如果(![thisView isHidden]){
[此视图设置帧:CGRectMake(偏移、缓冲、宽度、宽度)];
偏移量=偏移量+宽度+缓冲区;
}
}
}
];
}
@结束
唯一要做的就是在主视图中添加一个按钮,并将其绑定到IBOutlet
。在我的iPad模拟器上很漂亮。试试这个大小!;-)
ViewController.h
#定义缓冲区10
#定义宽度90
#进口
@界面ViewController:UIViewController
@属性(强,非原子)NSMUTABLEARRY*ViewArray;
-(iAction)hideViews:(id)发送方;
-(无效)中心可视视图;
@结束
ViewController.m
#导入“ViewController.h”
@实现视图控制器
@综合视景阵列;
-(无效)viewDidLoad{
[超级视图下载];
NSMutableArray*colorArray=[NSMutableArray];
[colorArray addObject:[UIColor redColor]];
[colorArray addObject:[UIColor orangeColor]];
[colorArray addObject:[UIColor yellowColor]];
[colorArray addObject:[UIColor greenColor]];
[colorArray addObject:[UIColor blueColor]];
[colorArray addObject:[UIColor purpleColor]];
[colorArray addObject:[UIColor blackColor]];
[self-setViewArray:[NSMutableArray]];
对于(int i=0;i<7;i=i+1){
UIView*view=[[UIView alloc]initWithFrame:CGRectMake(缓冲区+((宽度+缓冲区)*i),缓冲区,宽度,宽度)];
[查看setBackgroundColor:[colorArray objectAtIndex:i]];
[[self-ViewArray]addObject:view];
[[self view]addSubview:view];
}
}
-(iAction)hideViews:(id)发件人{
对于(int i=0;i<[[self-ViewArray]计数];i=i+1){
如果(i==1 | | i==4){
[(UIView*)[[self-ViewArray]objectAtIndex:i]setHidden:YES];
}
}
[self-centerVisibleViews];
}
-(无效)中心可视视图{
int visibleViews=0;
对于(int i=0;i<[[self-ViewArray]计数];i=i+1){
如果(![(UIView*)[[self-ViewArray]objectAtIndex:i]isHidden]){
visibleViews=visibleViews+1;
}
}
浮动总宽度=(缓冲区*2)+(宽度*[[self-ViewArray]计数])+(缓冲区*([[self-ViewArray]计数]-1));
浮点visibleWidth=(缓冲区*2)+(宽度*VisibleView)+(缓冲区*(VisibleView-1));
//用动画让它变得性感!!!
[UIView animateWithDuration:1.0
动画:^{
浮动偏移=(总宽度-可见宽度)/2.0;
对于(int i=0;i<[[self-ViewArray]计数];i=i+1){
UIView*thisView=[[self-ViewArray]objectAtIndex:i];
如果(![thisView isHidden]){
[此视图设置帧:CGRectMake(偏移、缓冲、宽度、宽度)];
偏移量=偏移量+宽度+缓冲区;
#define BUFFER 10
#define WIDTH 90
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) NSMutableArray *ViewArray;
- (IBAction)hideViews:(id)sender;
- (void)centerVisibleViews;
@end
#import "ViewController.h"
@implementation ViewController
@synthesize ViewArray;
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *colorArray = [NSMutableArray array];
[colorArray addObject:[UIColor redColor]];
[colorArray addObject:[UIColor orangeColor]];
[colorArray addObject:[UIColor yellowColor]];
[colorArray addObject:[UIColor greenColor]];
[colorArray addObject:[UIColor blueColor]];
[colorArray addObject:[UIColor purpleColor]];
[colorArray addObject:[UIColor blackColor]];
[self setViewArray:[NSMutableArray array]];
for (int i = 0; i < 7; i = i + 1) {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(BUFFER + ((WIDTH + BUFFER) * i), BUFFER, WIDTH, WIDTH)];
[view setBackgroundColor:[colorArray objectAtIndex:i]];
[[self ViewArray] addObject:view];
[[self view] addSubview:view];
}
}
- (IBAction)hideViews:(id)sender {
for (int i = 0; i < [[self ViewArray] count]; i = i + 1) {
if (i == 1 || i == 4) {
[(UIView *)[[self ViewArray] objectAtIndex:i] setHidden:YES];
}
}
[self centerVisibleViews];
}
- (void)centerVisibleViews {
int visibleViews = 0;
for (int i = 0; i < [[self ViewArray] count]; i = i + 1) {
if (![(UIView *)[[self ViewArray] objectAtIndex:i] isHidden]) {
visibleViews = visibleViews + 1;
}
}
float totalWidth = (BUFFER * 2) + (WIDTH * [[self ViewArray] count]) + (BUFFER * ([[self ViewArray] count] - 1));
float visibleWidth = (BUFFER * 2) + (WIDTH * visibleViews) + (BUFFER * (visibleViews - 1));
// Make it sexy with an animation!!!
[UIView animateWithDuration:1.0
animations:^{
float offset = (totalWidth - visibleWidth) / 2.0;
for (int i = 0; i < [[self ViewArray] count]; i = i + 1) {
UIView *thisView = [[self ViewArray] objectAtIndex:i];
if (![thisView isHidden]) {
[thisView setFrame:CGRectMake(offset, BUFFER, WIDTH, WIDTH)];
offset = offset + WIDTH + BUFFER;
}
}
}
];
}
@end
- (void)centerVisibleViews{
int visibleViews = 0;
for (int i = 0; i < [[self imgViews] count]; i = i + 1) {
if (![(UIView *)[[self imgViews] objectAtIndex:i] isHidden]) {
visibleViews = visibleViews + 1;
}
}
if(visibleViews==0) return;
float screenWidth = imgAnimals.superview.bounds.size.width;
//float maxWidthImage = screenWidth / visibleViews;
float imgWidth = [imgAnimals frame].size.width;
// Make it sexy with an animation!!!
[UIView animateWithDuration:1.0
animations:^{
float offset = screenWidth / 2.0 - (visibleViews * imgWidth / 2.0);
for (int i = 0; i < [[self imgViews] count]; i = i + 1) {
UIView *thisView = [[self imgViews] objectAtIndex:i];
if (![thisView isHidden]) {
CGRect rect = [thisView frame];
rect.origin = CGPointMake(offset, 0);
[thisView setFrame:rect];
offset = offset + rect.size.width;
}
}
}
];
}