2013-09-17 2 views
0

Я потратил часы своего дня сегодня, чтобы скрыть PickerView, когда мое приложение загружено, но проблема не в PickerView. это с CGRectMake.CGRectMake не работает с UIView

Я попытался простой проект Xcode, чтобы показать вам, что CGRectMake не работает для меня ...

вот моя раскадровки (серая область UIView компонент):

enter image description here

и вот мой интерфейс:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UIView *container; 

@end 

и вот мой файл реализации:

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    _container.frame = CGRectMake(0, 0, 320, 204); 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

это очень простой код, не загрязненный другими кодами ... но все же любые цифры, присвоенные этому CGRectMake, не приводят к перемещению серой области. Я изменил значение X, Y, но серый UIView стоит так же, как то, что вы видите на раскадровке.

Почему CGRectMake не работает на моем футляре? где проблема?

UPDATE: Я вижу autolayout проверяется на мой инспектор коробки

enter image description here

UPDATE: вот мой Connection инспектор

enter image description here

+0

У вас есть автозапуск включен в раскадровки? – Fogmeister

+0

Да, я сделал, пожалуйста, проверьте мое обновление. это то, что вы имели ввиду? –

+0

CGRectMake работает. Я уверен, что он правильно установил рамку. Однако, поскольку UIView не реагирует, вероятно, означает, что макет происходит в более позднее время (возможно, автоматическая компоновка?). Попробуйте переопределить layoutSubviews и ничего не делать внутри. – demosten

ответ

11

Если у вас есть AutoLayout включен для Storyboard затем изменить frame на вид не будет работать.

Вы не можете изменять рамки напрямую, используя AutoLayout. Вы должны изменить ограничения вокруг них.

Если вы отключите AutoLayout для Storyboard, он будет работать.

+1

ты блестящий человек !!! вы решаете эту проблему !!! большое спасибо от меня ... Я ЛЮБЛЮ ТЕБЯ, ЧЕЛОВЕК !!! ;-) –

+0

LOL, не беспокойтесь. С радостью помогите :) – Fogmeister

+1

«Реальное» решение - это получить нужное поведение WITH AutoLayout :) http://www.raywenderlich.com/store/ios-6-by-tutorials Эта книга потрясающая. Я изучил все материалы AutoLayout. – Fogmeister

1

Убедитесь, что IBOUTLET соединение соединяется с вид.

+0

привет, спасибо за ваш ответ ... Я просто обновляю свой пост. Добавил мой инспектор подключений.это то, что вызывает проблему? –

1

CGrectmake работает только потому, что вы установили размер кадра как CGRectMake (0, 0, 320, 204); в соответствии с размером пользовательский вид будет видимым внутри основного представления, если вы хотите скрыть координаты x или y с изменением значения, как это. Тогда не забудьте снять автоотключение

container.frame = CGRectMake(200, 0, 320, 204); 
+0

Я нашел проблему, братан ... это все из-за «AutoLayout» ... спасибо за то, что пришли сюда ... –

+1

ya k .. теперь надеюсь, что сборщик скрывается – Yohan

+0

да это ... Я провел более 12 часов просто найти это ... приятно видеть вас ... ;-) –

Смежные вопросы