2013-10-25 1 views
0

Я добавил кнопку изображения в конструктор интерфейса, и я хочу поместить его с помощью CGPointMake, поэтому я добавил кнопку IBOutlet в файл .h, а затем добавил CALayer в .m-файл, здесь мой код ...
в файле .hПозиционирование кнопки с использованием CALayer не работает

// This is the .h file 
@interface ViewController : UIViewController 
{ 
    IBOutlet UIButton *thebtn; 
} 

в .m файл

// This is the .m file 
- (void)viewDidLoad 
{ 
    CALayer *btn = thebtn.layer; 
    btn.position = CGPointMake(480, 150); 
    btn.opacity = 0.4f; 
    [self.view.layer addSublayer:btn]; 
} 

Так что это здорово, но мой вопрос о том, что положение кнопки не меняется, но кнопка непрозрачности была изменена так как я могу исправить эту проблему?
Спасибо заранее

+0

Есть ли какая-нибудь причина для использования слоя вместо представления? – LuisCien

ответ

1

Попробуйте сделать следующее:

Во-первых, переместить код viewDidAppear. Избавьтесь от кода layer. Также добавьте вызов setNeedsLayout. Вот пример:

-(void)viewDidAppear 
{ 
    thebtn.center = CGPointMake(480, 150); 
    thebtn.opacity = 0.4f; 
    [self setNeedsLayout]; 
} 

UPDATE

я понял, что проблема была. Вы должны отключить «Авто-макет». После этого ваше представление будет перемещено туда, где вы хотите.

Пожалуйста, см this link to see how to disable Auto Layout

Надеется, что это помогает!

+0

показывает мне эту ошибку (нет видимого @interface для «View Controller» ...) – AFB

+0

Можете ли вы поделиться со мной проектом? Было бы легче, если бы я отлаживал это на моем конце. – LuisCien

+0

ok только момент – AFB

1

Я думаю, что для таких целей, как изменение положения и непрозрачности зрения, вы бы лучше работать с UIView объекта (UIButton в вашем случае), вместо того, чтобы его собственность CALAyer. Это должно работать:

- (void)viewDidLoad 
{ 
    thebtn.center = CGPointMake(x, y); 
    thebtn.alpha = 0.4f; 
} 
+0

Я пробовал это, но позиция не была изменена. – AFB

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