4 Nisan 2019 Perşembe

Button için Image ve Text arasındaki mesafeyi azaltmak

Aradım taradım. Millet Grid kullanarak v.b. ile yapıyor ama TapGestureRecognizer kullanmak zorunda kalıyor o zaman da... Press ve Release durumlarındaki görsel animasyonlar için Button ile devam etmek lazım. Sonra buldum :)

ContentLayout="Left, 0"

yapınca aralık baya bi istediğim gibi oldu :D

Kullandığım font dikey olarak doğru hizalanmıyor!!!!

Bu tip bir hata genellikle her font'ta olmuyor. Ben Google'ın "Luckiest Guy" fontunda yaşadım. Font'un Google versiyonunda Türkçe karakterlerde sorun vardı. Gittim fonttr'den indirdim ve Türkçe karakter problemi çözüldü. Fakat her iki versiyonda da dikey olarak bu fontu kullandığım herhangi bir control'de metin normalden biraz yukarıda çıkıyordu.

Çözmek için:

Önce Apple'ın sitesinden
https://developer.apple.com/download/more/?=font
adresine iCloud hesabınızla giriş yapıp XCode'un en üst versiyonu neyse onun için Font Utilities'i indirin ve kurun.


Sonra font'un bulunduğu dizinde terminalden.
ftxdumperfuser -t hhea -A d LuckiestGuy.ttf
komutunu çalıştırın.

Bu işlem sonunda font ismini takip eder şekilde .hhea.xml uzanltılı bir dosya oluşacak.
Bu dosya içindeki ascender değerini eğer font yukarıdaysa arttırın aşağıda kalıyorsa azaltın.

Değeri değiştirdikten sonra

ftxdumperfuser -t hhea -A f LuckiestGuy.ttf
komutuyla ayarları fontunuza uygulayın.

Sonrasında daaaaa Visual Studio'dan Clean çekip uygulamanızı çalıştırın.
Geçmiş olsun :)

20 Mart 2019 Çarşamba

Resource fork, Finder information, or similar detritus not allowed hatası

Error: /Users/imac/Desktop/HangiFilm/HangiFilm.iOS/bin/iPhone/Debug/device-builds/iphone9.3-12.1.4/HangiFilm.iOS.app: resource fork, Finder information, or similar detritus not allowed

şeklinde bir hata alıyorsanız büyük ihtimalle eskiden dosya sisteminizde attribute'u olan bir dosyayı projenize eklemişsiniz. Büyük ihtimalle simulator'de çalışırken cihaz'da uygulamanızı çalıştırmayı denediğinizde bu hatayı alıyorsunuz. Çünkü iOS dosya özellikleriyle sizin masaüstü dosyanızın özellikleri arasında çakışma söz konusu.

Kurtulmak için projenizin ana klasöründe konsol açın veya konsolu açıp ana klasör konumuna gidin ardından

"xattr -cr ." ifadesini çalıştırın. (Çift tırnaklar yok ve sondaki noktayı eklemeyi unutmayın, o klasörün kendisi)

bu komut proje klasörünüz ve alt klasörlerdeki dosyaların özel atanmış özelliklerini kaldırır.
Daha sonra Visual Studio'dan clean çekin ve yeniden derleyin büyük ihtimalle çalışması lazım :)

20 Ağustos 2018 Pazartesi

Android'de TitleBar'ı kaybetmek...

Uğraştığınızda göreceksiniz bir türlü kaybolmuyor.
En klasik yöntem NoTitle uzantılı Style'ı MainActivity'de set etmek. Ama bu yöntem oldukça eski moda.

Yeni yöntem daha güzel gibi geldi bana:

MainActivity.cs dosyanızın içindeki
global::Xamarin.Forms.Forms.Init(this, savedInstanceState); satırının hemen altına:

global::Xamarin.Forms.Forms.SetTitleBarVisibility(this, AndroidTitleBarVisibility.Never);

ekleyin bu iş tamamdır.

25 Ağustos 2017 Cuma

Resource not defined in MainActivity hatası

Güzel kardeşim suç sende değil aslında. Uyuz android "-" işaretini beğenmiyor. Dosyalarına bir bak kesin "-" işareti içinde olan bir dosyan var. O yüzden Resource sınıfı havada oluşmuyor. Sakın Xamarin.Forms.Android altındaki Resource'u eklemeye kalkma bu Resource o Resource değil. Bu istediği mevcut görsellerin, fontların v.b. ile oluşturulan constant'larla dolu olan sınıf. "-"'leri "_" (alt tire) ile değiştir herşey 10 numara 5 yıldız. Hadi adyos.

19 Ağustos 2017 Cumartesi

Xamarin iOS Custom Renderer'ımda hiçbir touch event'i çalışmıyor?!?!?!?

protected override void OnElementChanged(ElementChangedEventArgs<ContentView> e)
{
base.OnElementChanged(e);

if (e.OldElement != null)
return;

UserInteractionEnabled = true;
}


Öncelikle OnElementChanged method'unu ezip oldElement null değilse çıkma işlemi yaparak ayarlarımızın sadece bir kez işletilmesini sağlarız. Bu klasik bir yöntemdir. Sonra asıl probleminiz XCode'da yazarken UserInteractionEnabled'ın designer'dan dolayı default olarak Yes gelmesidir. Highlight ettiğim satırı eklersen kodun tıkır tıkır çalışacaktır güzel kardeşim. Tabi bu arada Touch event'lerini aşağıdaki gibi handle etmeyi unutma.

public override void TouchesBegan(Foundation.NSSet touches, UIKit.UIEvent evt)
{
base.TouchesBegan(touches, evt);

...
}

public override void TouchesEnded(Foundation.NSSet touches, UIKit.UIEvent evt)
{
base.TouchesEnded(touches, evt);

...
}

29 Nisan 2017 Cumartesi

iOS StatusBar'ı kaybetmek (Hemidene efektnen)

Önce iOS projesinde Info.plist açılır. Alt soldan Source tab'ına geçilir. Listeye

"View controller-based status bar appearance"

öğresi eklenir.

Değeri de "No" yapılır. (Default Yes geliyor dikkat)

Sonra da AppDelegate.cs içindeki FinishedLaunching method'unda LoadApplication satırının altına

UIApplication.SharedApplication.SetStatusBarHidden(true, UIStatusBarAnimation.Fade);

ekliyoruz ve hayırlı uğurlu ossun.